最近参加したハッカソンでFacebookのGraphAPIを使うWebアプリケーションを開発しました.
その中で大変苦しめられ,地獄のどん底まで突き落とされたのでまとめたいと思います.
GraphAPIで本来したかった事
企画段階でGraphAPIでしたかった事は,
- AさんがこのWebアプリケーションにログインするとき,Facebookアカウントで認証をする.
- AさんのFacebookアカウントに登録されている友達の一覧を取ってくる.
- Aさんの友達であるBさんはこのアプリケーションを一度も使っていない人である.
つまり, 自分の友だちの全員のUIDや名前,Email等の個人情報を取得したかったのです!
じゃあ実際はどういう動きを...??
GraphAPIの公式ドキュメントを読んでみると,userの友達一覧(friends)を取得するときのpermissionの項目に次の1文がありました.
This will only return any friends who have used (via Facebook login) the app making the request.
んー...どういう事なんでしょ...
調べた結果Ver2.0になってからの仕様変更後の動きをまとめると...
- 認証を行ったアカウントに登録されている全友達の一覧を取ってくる事は 不可能!!
- ただし,同じWebアプリケーションにログインしている友達の一覧だけは取得する事が出来る.
だから,友達全員が同じアプリケーションに一度でもアクセスしていないと友達全員の一覧を取得する事は出来ないんですね...!
考察
- 公式Docはちゃんと隅々まで読みましょう.(英語でも)
- FacebookAPIの仕様変更は頻繁にある.
- APIに頼るとよろしくない.
これに辿り着くまでに約9時間を要しました.
サポートしてくださった各企業様のエンジニアの方々には感謝します...!!