4/25 から開催された F8 2015 で、Graph API v2.3 が紹介されました。Graph API を扱う上で影響が大きいと思われるものをここでは紹介します。詳細は公式 Changelog や Upgrade Guide を参照してください。
/oauth/access_token のレスポンス変更
これまでは URL エンコードされたクエリ文字列が以下の様な形式で返されていました。access_token=foobar&expires=5183814
今後は以下のように JSON オブジェクトが返されるようになり、項目も若干変わります。 expires が expires_in に変わっている点も要注意です。{"access_token":"123456789XXXXXXXXXXX","token_type":"bearer","expires_in":5183814}
Facebook::OpenGraph では対応済で、Version 1.23 をリリースしてあります。以下のように Graph API から返される実行バージョンを比較して適宜扱いを変えています。話は逸れますが、このバージョン比較では Graph API から返される facebook-api-version ヘッダを参照しています。この場合、バージョン指定なしでリクエストしていたり、失効済みのバージョンを指定していてデフォルトバージョンに暗黙に切り替わった場合でも、実際に実行されたバージョンを正しく取得できるのが便利です。開発者コミュニティに何か質問する前にこの facebook-api-version ヘッダを確かめておいたり、Facebook Platform にバグ登録する際には x-fb-rev ヘッダを共有すると捗ります。詳しくは Debuggin API Requests の該当箇所を参照してください。
また、Python 版 facebook_graph にも同等の変更を入れ、Facebook::Graph の対応も pull-req 済みです。
limit パラメータのデフォルト値が 25 に
これまで、友達一覧取得 API ではデフォルトで全件が返されるなど、エンドポイントによって limit 未指定時のデフォルトの挙動が異なっていました。今度から、limit を省略した場合のデフォルト値は 25 に統一されます。空配列は []、空オブジェクトは {} を返す
これまで、対象となるオブジェクトが存在しなければ空配列が返されるケースなどがありました。今後は、配列で返るべきケースとオブジェクトで返るべきケースでより一貫性を持つようになります。v2.1 公開時には、それまでtrue
もしくは false
の真偽値のみ返すエンドポイントがある傍らで {"success": true}
を返すエンドポイントがあったりしたのを統一していましたが、今回も同様に、より一貫性を持たせる類の変更となります。