web-dev-qa-db-ja.com

Facebook Graph API:1回のリクエストでより大きな写真を取得

現在、 Graph API Explorer を使用していくつかのテストを行っています。それは良いツールです。

友人の名前、ID、写真を含む、ユーザーの友人リストを取得したい。だから私は入力します:

https://graph.facebook.com/me/friends?fields=id,picture,name

しかし、画像は50x50に過ぎないため、このリクエストではもっと大きなものを希望します。

出来ますか ?

82
Martin

ただし、「picture」属性を取得する必要はありません。もっと便利な方法があります。必要なのはユーザーIDだけです。以下の例を参照してください。

https://graph.facebook.com/user_id/picture?type=large

追伸タイプはあなたが望むサイズを定義します

plzは、基本的な権限を持つトークンを使用すると、/ me/friendsはid + name属性を持つ友達のリストのみを返すことに注意してください

66
guleryuz

Facebookの このバグ で説明されているように、新しいAPI " field expansion "構文を使用して特定の画像サイズをリクエストすることもできます。

そのようです:

https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)
191
thaddeusmt

すべての友人(もちろんアプリも使用している)を正しい画像サイズで取得する最良の方法は、サイズタグ(正方形、小さい、通常、大きい)のいずれかで フィールド拡張 を使用することです):

/me/friends?fields=picture.type(large)

(編集:これはもう機能しません)

...または幅/高さを指定できます:

me/friends?fields=picture.width(100).height(100)

ところで、このように書くこともできます:

me?fields=friends{picture.type(large)}
74
luschn

フィールドの配列id,name,pictureid,name,picture.type(large)に変更します

https://graph.facebook.com/v2.8/me?fields=id,name,picture.type(large)&access_token=<the_token>

結果:

{
   "id": "130716224073524",
   "name": "Julian Mann",
   "picture": {
      "data": {
         "is_silhouette": false,
         "url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/15032818_133926070419206_3681208703790460208_n.jpg?oh=a288898d87420cdc7ed8db5602bbb520&oe=58CB5D16"
      }
   }
}
33
Julian Mann

次のように、画像のサイズをピクセル単位で設定できます。

https://graph.facebook.com/v2.8/me?fields=id,name,picture.width(500).height(500)

同様に、typeパラメーターを使用できます

{user-id}/?fields=name,picture.type(large)

ドキュメント から

タイプenum {小、普通、アルバム、大、正方形}

28
Agu Dondo

Graph API Explorerを詳細に調査し、最終的にfull_pictureを見つけました

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture

追伸full_pictureが、希望するフルサイズの画像を常に提供するとは限らないことに気付きました。 「添付ファイル」は

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture,attachments
20
Jonghee Park

また、高さまたは幅に基づいて必要に応じて画像を取得することもできます

https://graph.facebook.com/user_id/picture?height=

OR

https://graph.facebook.com/user_id/picture?width=

デフォルトでは、値はピクセル単位で、int値を指定するだけです。

19
Swaprks

うーん...私は解決策を見つけたと思う。

実際には、要求することができます

https://graph.facebook.com/me/friends?fields=id,name

http://developers.facebook.com/docs/reference/api/ (セクション「Pictures」)によると、プロフィールの写真のURLはユーザーIDで作成できます

たとえば、ユーザーIDが$ idにあると仮定します。

"http://graph.facebook.com/$id/picture?type=square"
"http://graph.facebook.com/$id/picture?type=small"
"http://graph.facebook.com/$id/picture?type=normal"
"http://graph.facebook.com/$id/picture?type=large"

しかし、それは最終的な画像URLではないので、誰かがより良い解決策を持っているなら、私は知ってうれしいです:)

9
Martin

FacebookグラフAPIへのリクエストで幅と高さを指定できます:http://graph.facebook.com/user_id/picture?width=500&heigth=500

2

v2.7から、/<picture-id>?fields=imagesは、異なるサイズの画像のリストを提供します。最初の要素はフルサイズの画像です。

複数の画像を一度に解決する方法がわかりません。

2
maxbellec

グラフの応答(「 http://photos-c.ak.fbcdn.net/ =」のもの)にある写真のURLで、デフォルトの「_s.jpg」を「_n.jpg」に置き換えるだけです「(通常サイズ?)または「_b.jpg」(ビッグサイズ?)または「_t.jpg」(サムネイル)。

Hacakable URL/REST APIはWebを改善します。

1
Ronan

rest-fbユーザー(正方形の画像、大きな解像度):Connection myFriends = fbClient.fetchConnection( "me/friends"、User.class、Parameter.with( "fields"、 "public_profile、email、first_name、last_name、gender、picture .width(100).height(100) "));

1
sigi

フルサイズの画像を取得するには、ピクチャキーの代わりにfull_pictureを使用できます。

0

今のところ、友人の大きな写真を取得する唯一の方法は、FQLを使用することだと思います。まず、友達のリストを取得する必要があります。

https://graph.facebook.com/me/friends

次に、このリストを解析して、すべての友達idsを抽出します。それができたら、次のFQLクエリを実行するだけです。

SELECT id, url FROM profile_pic WHERE id IN (id1, id2) AND width=200 AND height=200

200これは単なる模範的なサイズであり、何でも入力できます。次の応答が返されます。

{
  "data": [
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }, 
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }
  ]
}

各URLは200x200px画像へのリンクです。

0

私は同じ問題を抱えていますが、私の問題を解決するためにこれを試しました。大きな画像を返します。完全な修正ではありませんが、これを試すことができます。

https://graph.facebook.com/v2.0/OBJECT_ID/picture?access_token=XXXXX

0
Ajay

次のように、各jsonオブジェクトのURLからピクセルサイズを変更して、画像のサイズを変更してみてください。

たとえば、s480x480s720x720に変更します

以前: https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-xfp1/t1.0-9/q71/s480x480/10454308_773207849398282_283493808478577207_n.jpg

後: https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-xfp1/t1.0-9/q71/s720x720/10454308_773207849398282_283493808478577207_n.jpg

0
E_X

picture.type(full_picture)でリクエストを行ったときにこのエラーが発生しました:

「(#100)フィールド「picture」の場合:typeは次の値のいずれかでなければなりません:small、normal、album、large、square」

picture.type(album)およびpicture.type(square)を使用してリクエストを行うと、50x50ピクセルの画像で応答します。

picture.type(large)でリクエストを行うと、200x200ピクセルサイズの画像で応答します。

picture.width(800)でリクエストを行うと、477x477ピクセルの画像で応答します。

picture.width(250)、応答320x320で。

picture.width(50)で、応答は50x50です。

picture.width(100)を使用して、100x100で応答します。

picture.width(150)で、応答は160x160です。

ユーザーが最初にその写真を追加したときに、facebookはさまざまなサイズの画像を提供すると思います。

ここに表示されるのは、ユーザー画像をリクエストするためのAPIは、リクエストされた画像のサイズ変更をサポートしていません。画像の最も近いサイズを与えると思います。

0
Ebleme

JSスタイルのバリアント。巨大な大きな画像幅を設定するだけで、最大のバリエーションが得られます。

FB.api(
  '/' + userId,
  {fields: 'picture.width(2048)'},
  function (response) {
    if (response && !response.error) {
      console.log(response.picture.data.url);
    }
  }
);
0