12

私のアプリケーション (ゲーム) は、しばらくの間 Facebook で実行されています。まず、グラフ API 呼び出し (my-uid/friends) を介してフレンド リストを要求し、ユーザー名とプロフィール写真を要求します。

通常、次のページに友達が表示されるまで、数千人までのすべての友達のリストが返されます。ほとんどのユーザーが 1 回の通話で友達を獲得できるので、これは素晴らしいことです。

ただし、突然、アプリに変更はありません。約 40 分前 (火曜日 (PDT) の 18:40 - 2012 年 5 月 2 日) 'ページ' あたり 25 人の友達しかいない応答を受け取り始めました!

複数の呼び出しを使用してフレンド リスト全体を取得することはできますが、現在、ゲームはそれを適切に行うように設定されていません。突然の変更の理由を誰か教えてください。他の誰かが同様の問題を見たことがあります.以前のように、ページごとに最大5000人の友人をリストに表示するにはどうすればよいですか.

Graph API Explorer を使用して再現可能

4

6 に答える 6

19

他に何を言うべきかわかりません。返されるデフォルトの番号が変更された可能性がありますが、試してみると、 を呼び出すと/me/friends?limit=5000完全なリストが返されます (ただし、私の友人リストは > 500 で < 1000 であるため、途中で途切れる可能性があります)

(補足:友人の平均数は ~190 であることがわかっているため、おそらくほとんどのユーザーは 500 未満であり、500 を超えてページングする必要がある場合はエッジ ケースになります。

于 2012-05-02T02:42:41.643 に答える
3

Facebook は、他の API 呼び出し (フィード、投稿、友達など) の制限を 25 に変更したようです。パラメーターなしで友達を要求すると、JSON 応答は次のようになります。

"paging": {
    "next": "https://graph.facebook.com/USER_ID/friends?format=json&limit=25&offset=25&__after_id=LAST_ID"
}

とにかく、この種のことを防ぐために、制限とオフセットのパラメーターを常に設定することができます/設定する必要があります。制限 = 0は、すべての友達リストを返します。

https://graph.facebook.com/USER_ID/friends?limit=0

通常のユーザーからのみ友達をリクエストする場合、許可される最大数は 5,000 であるため、Facebook ページから情報をリクエストする場合、または投稿やフィードなどの他の種類の API 呼び出しをリクエストする場合、制限は0 または5,000 にする必要あります。下降。

(更新) Facebook はこのバグを修正したので、制限を 0 に設定すると 0 人の友人が返されます。正の制限を設定する必要があります。Dinuz に感謝します

于 2012-05-02T04:44:09.253 に答える
2

あなたができる最善のことは、 Igy が言うように limit=5000 パラメータを追加することだと思います。しかし、この変更がドキュメントに記載されていなかったり、通知されなかったりしたため、バグ レポート
を投稿しました。

于 2012-05-02T03:40:53.693 に答える
1

(React Nativeなどで)使用している場合は GraphRequest()、次のように文字列フィールドに直接配置できます。

new GraphRequest(
  '/me',
  {
    accessToken,
    parameters: {
        fields: {
          string: 'id,email,first_name,last_name,friends.limit(5000)'
        }
    }
    ...
于 2018-03-07T17:51:56.830 に答える
1

/v2.2/me/friendsエンドポイントから返される結果の数は、デフォルトで 25 になりました。

フレンド リストは、アプリを使用しているフレンドのみを返すようになりました: /me/friendsエンドポイントを介して返されるフレンドのリストは、アプリを承認したフレンドのリストに制限されるようになりました。

Facebook の変更を参照 Facebook API の変更ログ

于 2015-02-17T11:10:11.563 に答える