はじめに
自分用メモです。調査が進み次第追記します。
FacebookのGraph APIは去年から2.xできたから移行してね〜とアナウンスしておりましたが、まだその時点では1.xのAPIも使用することができました。
しかしついにその期限も切れ、昔のAPIをそのまま使うことはもはやできません。
SDK v3.xから移行した部分は[旧クラス] -> [新クラス] で記述してます。
SDKのver3.xから4.xへの移行については以下の公式ページに記載されています。
https://developers.facebook.com/docs/ios/upgrading-4.x
Graph APIの1.0から2.0への移行は以下の公式ページに記載されています。
https://developers.facebook.com/docs/apps/upgrading?locale=ja_JP
ログイン
SDKで提供されるログインボタンを使わず、アプリ内で自前のコードでログインする場合、FBSDKLoginManagerで処理を行います。
- (void)logInWithReadPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler;
- (void)logInWithPublishPermissions:(NSArray *)permissions handler:(FBSDKLoginManagerRequestTokenHandler)handler
また操作の途中で権限を追加したい場合は上記メソッドをその時呼び直せばOKです。
ログインに成功するとFBSDKAccessTokenが取得されてアクセスできるようになります。
アクセストークン
FBSession -> FBSDKAccessToken
ユーザの権限やIDはFBSDKAccessTokenが保持しています。ログインの項でも書きましたが、ログインが成功した段階でこのトークンが保存され、各情報を取得できるようになります。
FBSessionではactiveSessionというセッションが有効か調べるプロパティがありましたがFBSDKAccessTokenにはその類のものがありません。FBSDKAccessTokenとLoginManagerで制御するようにと書かれています。
リクエスト
FBRequest -> FBSDKGraphRequest
Graph APIへのリクエストはFBSDKGraphRequestを使います。
- (FBSDKGraphRequestConnection *)startWithCompletionHandler:(FBSDKGraphRequestHandler)handler;
ここはあまり変更なく、従来の記述からクラス・メソッド名を最新のものに修正すればいいくらいかと思います。
セッション確認
[FBSession openActiveSessionWithReadPermissions:::]
[FBSession openActiveSessionWithPublishPermissions:permissions:::]
-> ログインメソッドで代用
従来のメソッドはセッションがopenかcloseか取得できましたが、FBSession削除に伴い、この概念が現在はありません。
代わりに行うとすれば、先述のFBSDKLoginManagerのログインメソッドを用いればよさそうです。
ログイン処理し直せばTokenも更新されるので必要ないということかも。
ダイアログ
FBWebDialogs
FBSDKGameRequestDialog,FBSDKAppGroupAddDialog,FBSDKAppGroupJoinDialogという3つのダイアログが追加されており、これらで置き換えるそうです。
(要調査)
Tips
取得できるユーザIDがアプリ固有で割り振られるものになっている
Facebookアプリとユーザを紐付け、そこからユーザIDを取得すると、本来のユーザIDを取得できません。
App Scoped User Idという概念が追加されたそうで、Facebookアプリと紐付ける毎に固有のIDが割り振られ、アプリ内から取得できるIDはこの固有のIDになってしまいます。
usernameは取得できなくなった
/meですらusernameを取得することができません。そもそも削除なのでリクエストに含めるとエラーが返ってきてしまいます。
一意なIDの取得はかなり制限されているようです。
友人リストがAPI2.0からデフォルトでは取れない
これまでは特に権限が必要ありませんでしたが、user_friendsを権限に追加する必要があります。
また、同じアプリと連携している友人しか取れないようになっているそうです。なのでこのアプリを始めよう!みたいな招待ができないということですね…。
v1.0では、利用者の友達の「いいね!」や誕生日など、限られた量の友達データをアプリから閲覧ことができる権限を要求できました。
v2.0では、これらの権限はすべて削除されました。 今後は、利用者の友達が同じアプリにログインし、データを閲覧する権限を許可している場合を除いて、アプリから利用者の友達のデータを閲覧することはできなくなりました。
とあるように、友達関連の取得もかなり厳しくなっているようです。
Graph API 2.0 及び FQLは2016年に使えなくなるらしい
複雑な情報を取得したい場合に有用と思われるFQLですが、最速で2016年4月に使えなくなるそうです。
これはGraph API2.0を使えなくするタイミングで行われる模様です。
https://developers.facebook.com/docs/apps/changelog?locale=ja_JP
エラー
エラーコードとエラーサブコードがあり分類されています。
NSError形式で返ってくるので、[error userInfo]内のDictionalyから定数Keyを使って取得します。
公式情報は以下。ここに記載されてないコードでも来たりするので要調査。
https://developers.facebook.com/docs/graph-api/using-graph-api/v2.4
*** メモ ***
12 : 正しくないパラメータを含む
100: 正しくないfieldを含む
190 : OAuthエラー
その他
調査中です。。。