グラフAPIから "本物の "Facebookプロフィール画像URLを取得する
質問
FacebookグラフAPIを使うと、ユーザーのプロフィール画像を取得することができます。
http://graph.facebook.com/517267866/picture?type=large
となっており、問題なく動作します。しかし、上記のURLをブラウザに入力すると、画像の実際のアドレスは
http://profile.ak.fbcdn.net/profile-ak-snc1/v227/560/83/n517267866_1928.jpg
最初の URL を使って 2 番目の URL をプログラム的に取得するにはどうすればよいでしょうか。
どのように解決するのですか?
最初の URL は、2 番目の URL に HTTP 302 (一時的なリダイレクト) を与えています。 そこで、プログラム的に2番目のURLを見つけるには、1番目のURLに対してHTTPリクエストを発行して
Location
ヘッダを取得します。
とはいえ、2つ目のURLが永続的であることを当てにしてはいけません。 HTTP レスポンス コード (永久的な 301 ではなく 302) を少し読むと、Facebook は、たとえば画像をホストするためにサーバーを使用する人々を防ぐために、これらの URL を定期的に変更する可能性があることがわかります。
編集します。
OPが貼ったCDN URLが404になっていることに注目し、URLが長寿命であることは当てにならないことがわかります。 また、グラフ API へのリンクが
<img>
をSSLで保護されたページで
というパラメータがあります。
を追加する必要があります。
を使用することを確認してください。
https://graph.facebook.com
.
更新しました。
APIには
パラメータを追加しました。
-
redirect=false
- を追加し、リダイレクトではなく JSON を返すようにしました。 再送された JSON には CDN の URL が含まれています。
{
"data": {
"url": "http://profile.ak.fbcdn.net/...",
"is_silhouette": false
}
}
繰り返しますが、私はこのCDN URLが長寿命であることを当てにしていません。 JSONレスポンスは寛容なCORSヘッダとともに送信されるので、XHRリクエストでクライアント側で自由にこれを行うことができます。
関連
-
[解決済み] FacebookアプリケーションにCanvasを追加し、CanvasのURLを確保する方法
-
[解決済み] FacebookやTwitterの新しいURLのシェバング/ハッシュバン(#!)は何のため?
-
[解決済み】Facebook OAuth "このURLのドメインは、アプリのドメインに含まれていません。"
-
[解決済み】Facebook API - Facebook APIを通じてFacebookユーザーのプロフィール画像を取得する方法(ユーザーにアプリケーションを「許可」させる必要はありません)
-
[解決済み】facebook: 永続的なページアクセストークン?
-
[解決済み] Facebookのログインメッセージ。"URL Blocked: このリダイレクトは、リダイレクトURIがアプリのクライアントOAuth設定にホワイトリストされていないため、失敗しました。"
-
[解決済み] Facebookアプリケーションをlocalhostで実行する
-
[解決済み] 自分が開発したFacebookアプリを削除するにはどうすればよいですか?
-
[解決済み] Facebookを認証に利用するWebサイトのREST API
-
[解決済み] 見えない文字 - ASCII
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptを使わずにFacebookのリンクを共有する
-
[解決済み] Facebook Sharerは、私のURLを共有する際に、画像やその他のメタデータをどのように選択するのですか?
-
[解決済み] Facebook Graph API v2.0+ - /me/friends が空、または私のアプリケーションを使用している友人のみを返す。
-
[解決済み】Facebook OAuth "このURLのドメインは、アプリのドメインに含まれていません。"
-
[解決済み] FacebookアプリのOauth Redirect URIはどこに設定するのですか?
-
[解決済み] Open Graph名前空間宣言。XMLNSを使ったHTMLか、headプレフィックスを使ったHTMLか?
-
[解決済み] Facebookアプリにおけるアプリドメインとは?
-
[解決済み] Facebook Sharerのキャッシュをクリアするには?
-
[解決済み] Facebook Graph API : 一度のリクエストでより大きな画像を取得する
-
[解決済み] FacebookユーザーURL(ID別