Parkソーシャルメディア・Web関連のマーケティング・技術情報と、スノーボード・旅行など休日の遊びを記録したブログ。]Facebook公式のFAQより引用FacebookのAPIのバージョン変更に伴い、アプリ経由の投稿権限「publish_actions(旧publish_stream)」使用の際には審査必須となった件に代表されるようにv2.0では結構クリティカルな仕様変更があります。個人的にpublish_actions周りの次に大きな仕様変更だと思っているのが、ユーザーのフレンドリスト取得周りのAPIの縮小・廃止です。事実上、2014/4/30以降に新たに作成されたアプリではFacebookの全フレンド一覧は取れません。それ以前に作られたアプリでも、2015/4/30以降は取れなくなります。※一応取る方法あります(後述)が、おそらく限定的な用途でのみ使えます。全フレンド数は、v2.0でも取ることが出来ます。この情報は見ないので、まとめときます。ちなみに、フレンドリスト周りの仕様変更はあまり日本では騒がれてませんでしたが、5月ごろ海外のフォーラムでは相当大騒ぎになっていたようです。apphttp://stackoverflow.com/questions/23417356/facebook-graph-api-v2-0-me-friends-returns-empty-or-only-friends-who-also-use-mそれを受けてか、Facebookも各所にかなりしつこくこの件を書いています。Guidehttps://developers.facebook.com/docs/apps/upgrading#upgrading_v2_0_user_idsおさらいFacebookのAPIは2015/4/30にv1.0→v2.0へとバージョン変更されます。それに伴い、2014/4/30以降に新たに作成されたアプリについては、既に強制的にv2.0への移行が行われており、古いアプリでなければv1.0は使えない、というのが現状です。2014/4/30よりも以前に作成されたアプリは、1年間は問題なく稼働しますが、2014/4/30以降に作成されたアプリに関しては、各種の仕様変更に対応しないと正常に動かない、ということになります。従来のユーザーのフレンド数やフレンドリストの取得方法v1.0では、「/me/friends」というAPIを叩くことで、ユーザーの全ての友達一覧が取得できました。特別なパーミッションは不要(公開プロフィールのみ)です。(おそらく私がおぼえている限りでは)「フレンド数」という値を取得するAPIは無かったはずなので、友達の数についてはこの友達一覧のデータの数を数えることで取得していました。Explorerで確認してみます。任意のアプリケーションを選び、公開プロフィールのみでアクセストークンを発行して、「/v1.0/me/friends」を叩くと、自分の全ての友達一覧が取得できているのがわかると思います。v2.0以降のユーザーのフレンド数やフレンドリストの取得方法ところがこの「/me/friends」ですが、v2.0からは仕様が変わります。アプリ経由でこのAPIを利用する場合、ユーザーに対して「user_friends」という権限を承認させる必要があります。この権限自体は、「publish_actions」のように審査が必要なわけではなく、アプリを作成すればデフォルトで付与されるscopeですが、当然ユーザーが意図的に承認しない場合もあるので、注意が必要です。大きな仕様変更は、「/me/friends」で取得できる友達のリストが「全ての友達一覧」ではなく、「友達のうち、同じアプリを承認している人だけ」しかとれなくなったという点です。ケースによっては一人もいない場合も出てきます。Explorerで確認してみましょう。任意のアプリケーションを選び、「user_friends」パーミッションを入れたアクセストークンを発行して、「/v2.0/me/friends」を叩くと、自分の全ての友達一覧は出ずに、「友達のうち、同じアプリを承認している人だけ」しか出てこないことがわかると思います。運よく「同じアプリを承認してる友達」がいなければテストすらできませんけどね。上の画像をよく見てください。194}なんということでしょう。友達の数が取れてます。いうことは、v2.0以降はこの値を使えば、友達の数だけは取得できますね。わけで早速ためしてみましょう。「友達の数を取得」デモページ↑のデモページでログインしてみてもらえば、友達の数が表示されるはずです。(※もちろん、ログイン時にアプリの承認をした場合、です。)実際のログイン及びデータの取得周りのスクリプトは以下。ご自由にデモページのソース見てください。'public_profile,user_friends'});};v2.0以降でユーザーの全フレンドリストを取得するにはどうすればいいかFacebookの公式ドキュメントによれば、下記の2つのケースにおいてのみ、別の方法で取得できるようです。「/me/taggable_friends」という新しいAPIで、「タグ付けできる友達」の一覧を取得できます。/user/taggable_friendshttps://developers.facebook.com/docs/graph-api/reference/v2.0/user/taggable_friendsこのAPIも、「user_friends」パーミッションの取得が必要です。Friends」機能の審査が必要になりますので、注意が必要です。(※パーミッションの審査ではなく、提供機能の審査、のようです。審査通さないとどうなるんだろ。)さてここからは本音と建前という感じですが、この「/me/taggable_friends」を使えば、従来通りユーザーの友達一覧リストが取れそうな気がします。実際に試してみました。「友達の一覧を取得」デモページ確かに取れますね・・。こちらも、デモページのソースはご自由にご覧ください。テスター」でしか利用できないようです。それ以外のRoleのユーザーが利用するためには、Reviewをして申請通す必要があります。(なので、↑のデモは動かないですね・・。)ただし、一応このAPIはあくまでもタグ付け機能を提供するために用意されているので、それ以外の用途で使った場合、アプリに対してペナルティがあり得ますのでご了承ください。※ただし、ゲームアプリのみゲームアプリなどにおいて、「友だちを招待する」機能を提供する場合は、専用のAPIがあります。/user/invitable_friendshttps://developers.facebook.com/docs/graph-api/reference/v2.0/user/invitable_friends「/me/invitable_friends」を使えば、「招待可能な友人一覧」が取得できます。ゲームアプリのみ利用可能。間違えやすいAPI「/me/friendlists」ちなみに、「/me/friendlists」なるそれっぽいAPIが存在しますが、これは「リスト」のことです。使ってない人はぴんと来ないかもしれませんが、Facebookでは友達をいくつかの分類で好きなようにリスト化できます。デフォルトでは「親しい友達」「家族」など。他に例えば「会社」「サークル」とかね。Twitterのリストと同じです。この「/me/friendlists」ってのはそのリストの情報を取得するAPIなので、「友だちの一覧」を取得するものではありません。ParkFacebookのOGPキャッシュ問題に終止符。]タイトルとURLをコピーしました。