Facebook Graph APIでプロフィール画像のURLを取得する方法
※注意!
本エントリの情報は、執筆当時のFacebook APIの仕様に準じた古い内容が含まれています。以下のエントリに新しい情報が記載されていますので、併せてご確認ください!
「Graph APIでプロフィール画像のURLを取得する方法」が色々変わっていたのでまとめてみる - でぶぬる日記
特定のユーザのFacebook上のユーザ情報を取得したい場合は、以下のようなURLをHTTP GETで叩けば良い。
https://graph.facebook.com/216311481960
{ "id": "216311481960", "name": "Bill Gates", "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/187894_216311481960_2373359_s.jpg", "link": "http://www.facebook.com/BillGates", "likes": 460946, "category": "Business person", "website": "www.thegatesnotes.com\nwww.gatesfoundation.org", "username": "BillGates" }
ただこの方法の場合、ユーザによっては picture(プロフィール画像のURL)がJSONに含まれないことがある。
確実に特定の情報を含めたい場合は、"fields"パラメータでカンマ区切りで指定すれば良い。
https://graph.facebook.com/216311481960?fields=picture,name
{ "name": "Bill Gates", "id": "216311481960", "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/187894_216311481960_2373359_q.jpg" }
指定していない情報はJSONに一切含まれなくなるので、ちとめんどいのが難点ではある。
ちなみに、FacebookのAPIリファレンスを参考にして考えると、以下のようなURLを試してみたくなるが、
https://graph.facebook.com/216311481960/picture
これだと「画像のURL」ではなくて「画像データ自体」がレスポンスとして返ってきてしまう。
string representing URL of the user's profile picture (use ?type=square | small | normal | large to request a different photo)
のように、「画像のURL文字列を返すよ!」としっかり書いているわけで、どう考えてもトラップ。
「HTTPステータスコード302のlocationヘッダの中には確かに画像URLが入ってくる」から、広義では「画像URLを返している」とは言えるのかもしれないけど、なんだかイマイチ。