1. ホーム
  2. facebook

[解決済み] Facebook Graph API v2.0+ - /me/friends が空、または私のアプリケーションを使用している友人のみを返す。

2022-03-14 20:13:31

質問

Graph API v2.0を使って友人の名前とIDを取得しようとしていますが、データが空になってしまいます。

{
  "data": [
  ]
}

v1.0を使用していた時は、以下のようなリクエストで全てOKでした。

FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
                                              NSDictionary* result,
                                              NSError *error) {
    NSArray* friends = [result objectForKey:@"data"];
    NSLog(@"Found: %i friends", friends.count);
    for (NSDictionary<FBGraphUser>* friend in friends) {
        NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id);
    }
}];

でも、今は友達ができないんです

どうしたらいいですか?

Graph APIのv2.0では、以下のように /me/friends は、その人の友人で、そのアプリを利用している人を返します。

また、v2.0では、リクエストの際に user_friends を各ユーザーに許可してください。 user_friends は、もはやすべてのログインにデフォルトで含まれません。各ユーザーは user_friends のレスポンスに表示されるようにするためのパーミッションです。 /me/friends . 参照 Facebookアップグレードガイド をご覧いただくか、以下の概要をご確認ください。

アプリを使用していない友達のリストにアクセスしたい場合、2つの方法があります。

  1. 友達をタグ付けしたい場合 を使用すると、アプリを使用してFacebookに公開するストーリーに /me/taggable_friends APIを使用します。 このエンドポイントを使用するには、Facebookによる審査が必要です また、ユーザーが投稿する際にタグ付けできるようにするために、友達のリストをレンダリングする場合にのみ使用する必要があります。

  2. アプリがゲームであり、ゲームがFacebook Canvasをサポートしている場合 を使用することができます。 /me/invitable_friends をレンダリングするためのエンドポイントです。 カスタム招待ダイアログ そして、この API から返されたトークンを 標準的なリクエストダイアログ。

また、アプリがユーザーの友人の全リストを取得できなくなる場合もあります。 user_friends パーミッション)。 これはFacebookによって「意図的」であることが確認されています。

友達をアプリに招待できるようにしたいアプリの場合、これまで通り Webで送信ダイアログ または新しい iOSのメッセージダイアログ アンドロイド .

UPDATE: Facebookは、この変更に関するFAQをこちらで公開しています。 https://developers.facebook.com/docs/apps/faq 開発者が友人を招待するために利用できるすべてのオプションについて説明しています。