0

FB の Graph API とフル サイズの画像を取得する方法に関する多くの既存の質問を認識しています。

しかし、それらの多くはユーザー プロフィールの写真を取得することに関するもので、それらは "/<userid>/picture" などで回答されます。ページフィードから投稿された画像を取得する方法を知る必要があるため、これは私が探しているものではありません。full_image次に、「検索クエリで使用する」で回答された質問があります。

さて、この時点で私の問題が始まります。full_image実際には完全なイメージではありません。720x720 ピクセルに制限されています。

例を見てみましょう: Facebook の Graph API エクスプローラーでSPIEGEL ONLINE からこの画像を調べてください。

Graph API リクエストに指定されたパスは次のとおりです。

/38246844868_10154299256109869?fields=full_picture,picture,permalink_url,type,object_id

応答は次のとおりです。

{
  "full_picture": "https://scontent.xx.fbcdn.net/v/t1.0-9/s720x720/13450864_1068539139897737_5236884236245491903_n.jpg?oh=20cc415e7931b8eb8a6228ab253bfa53&oe=57E23B8B",
  "picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/s130x130/13450864_1068539139897737_5236884236245491903_n.jpg?oh=37c4263e047f841da7243c040a4f279d&oe=57C6469E",
  "permalink_url": "https://www.facebook.com/spiegelonline/posts/10154299256109869",
  "type": "photo",
  "object_id": "1068539139897737",
  "id": "38246844868_10154299256109869"
}

ご覧のとおり、私はpicture(これは単なる親指です) と でインデックス付けされたフルサイズの画像をリクエストしましたfull_picture。残念ながら、この写真はフルではなく、サイズを変更したものです。画像の URL には、最大で 720x720 しかないことが記載されています。

ここにあります: https://scontent.xx.fbcdn.net/v/t1.0-9/s720x720/13450864_1068539139897737_5236884236245491903_n.jpg?oh=20cc415e7931b8eb8a6228ab253bfa53&oe=57B23B8

後ろのFacebookページにアクセスするpermalink_urlと、画像投稿が表示されます。

どうぞ: https://www.facebook.com/spiegelonline/posts/10154299256109869

投稿された画像をフルスクリーン モードで開き、右クリックして画像ファイルを表示すると、画像が 720x720 よりもはるかに大きくなることがわかります。

そこにあります: https://scontent-frt3-1.xx.fbcdn.net/t31.0-8/13422344_1068539139897737_5236884236245491903_o.jpg

上記のように、API エンドポイントによって応答された URL と比較してください。サーバーも違います。そのため、SO に関する他のいくつかの質問で言及されているように、「_n」を「_o」に置き換える簡単な解決策はありません。

私の質問は、Graph API を使用してフルサイズの画像 URL を取得するにはどうすればよいですか?

TL;DR: Facebook の Graph API は、ページのフィードに投稿されたサイズ変更された画像を、full_image. では、実際の完全な (サイズ変更されていない) 画像を取得する方法について説明します。

4

1 に答える 1

1

Graph API Explorer でもう一度遊んだ後、最終的に解決策を見つけました。そして、それは私が思っていたよりもずっと簡単です。

あなたがする必要があるのは、次のいくつかのステップです:

  1. このパスを要求するだけです (今回はfull_pictureアクセサーなしで、object_id重要なのは のみです):

/38246844868_10154299256109869?fields=object_id

  1. object_idAPI の応答から取得します。
{
  "object_id": "1068539139897737",
  "id": "38246844868_10154299256109869"
}

この例では"1068539139897737"です。

  1. images次に、上記のすべてをリクエストしますobject_id

/1068539139897737?fields=images

  1. 応答は次のような JSON です。
{
  "images": [
    {
      "height": 2048,
      "source": "https://scontent.xx.fbcdn.net/v/t31.0-8/13422344_1068539139897737_5236884236245491903_o.jpg?oh=e923e167d258e77c12caf422d98b44aa&oe=59968118",
      "width": 1536
    },
    {
      "height": 1280,
      "source": "https://scontent.xx.fbcdn.net/v/t31.0-8/p960x960/13422344_1068539139897737_5236884236245491903_o.jpg?oh=7a5086e29957b222c2fd1136f3640c98&oe=598633CD",
      "width": 960
    },
    // … many others in between here …
    {
      "height": 225,
      "source": "https://scontent.xx.fbcdn.net/v/t1.0-0/p75x225/13450864_1068539139897737_5236884236245491903_n.jpg?oh=26d94247c4e34a69fb0db3fb1ae213b5&oe=599353F9",
      "width": 168
    }
  ],
  "id": "1068539139897737"
}
  1. サイズ別に並べ替えられたリストから、images最初のエントリを取得します。手に入れましょうsource– ほら – これが全体像です。
于 2017-04-17T18:58:30.020 に答える