私は Facebook ログインを使用するアプリを開発しています。ログイン後、ユーザーは追加情報とプロフィール写真を設定する必要があります。写真はログインした Facebook アカウントから提供されます。これで、プロフィール写真の URL を含むアカウントの詳細全体がデータベースに保存されます。
驚いたことに、プロフィール写真が突然機能しなくなりました。ブラウザで URL を開くと、「URL 署名の有効期限が切れています」というメッセージが表示されます。
これらの写真をダウンロードして自分のサーバーに保存することは、私にとっては現実的ではありません。その URL を永続的にするために何かできることはありますか?
ベストアンサー1
はい、Facebook の CDN URL は期限が切れる場合があります。長期間使用するために保存することは想定されていません。
しかし、グローバル/アプリスコープのユーザーIDを持っている限り、任意のユーザーのプロフィール写真をリクエストすることができます。
https://graph.facebook.com/4/picture // Mark Zuckerberg’s profile pic
– その URL は、画像の現在の CDN URL へのリダイレクトを発行します。
ただし、この画像は 50 x 50 ピクセルとかなり小さいので、 を使用してhttps://graph.facebook.com/4/picture?type=large
大きいバージョンをリクエストできます。これにより、200 x 200 ピクセルのプロフィール画像が提供されます (ユーザーが正方形の画像をアップロードしていない場合は、それに近いサイズになります)。
一部の画像を取得するにはアクセス トークンが必要であることに注意してください。たとえば、https://graph.facebook.com/72256131540/picture
次のようにアクセス トークンを追加しない限り、疑問符の一般的な画像が返されます。
https://graph.facebook.com/72256131540/picture?access_token=<ACCESS_TOKEN>
アップデート:
アプリスコープのユーザーIDでプロフィール写真をリクエストする場合は、問題なく同じように動作するはずです。古いグローバルユーザーIDまたはページスコープのユーザーIDでリクエストする場合は、アクセストークンを含める必要があります。https://developers.facebook.com/docs/graph-api/reference/user/picture#要件詳細が記載されています。
(アプリまたはページのアクセス トークンは、公開されたクライアント側コードで公開されるべきではないため、それらを使用する場合は、リクエストはサーバー側でのみ行う必要があります。)