如何使用iOS SDK在FB中获取用户的所有朋友

Posted

技术标签:

【中文标题】如何使用iOS SDK在FB中获取用户的所有朋友【英文标题】:How to get all the friends of the user in FB using iOS SDK 【发布时间】:2014-08-25 18:05:41 【问题描述】:

FaceBook 从 2.0 版本开始推出新的 API,并要求用户升级到新的 SDK。 在我的 ios 应用程序(不是游戏)中,用户使用 Facebook 登录。在应用程序中,我可以选择显示用户的所有 FB 朋友(未使用应用程序的朋友)。

我尝试了以下代码,它返回正在使用该应用程序的朋友:

[FBRequestConnection startWithGraphpath:@"/me/friends"
                                 parameters:nil
                                 HTTPMethod:@"GET"
                          completionHandler:^(
                                              FBRequestConnection *connection,
                                              id result,
                                              NSError *error
                                              ) 
                              /* handle the result */
                              NSLog(@"%@", result);
                          ];

下面的代码在我的应用程序中不起作用,因为我的应用程序不是游戏。根据 FB,以下代码仅适用于游戏。

FBRequest *request =  [FBRequest  requestWithGraphPath:@"me/invitable_friends"
                                                parameters:@@"fields":@"name,installed,first_name"
                                                HTTPMethod:@"GET"];

    [request startWithCompletionHandler:^(FBRequestConnection *connection,
                                          id result,
                                          NSError *error)


        NSLog(@"%@", result);
    ];

还有其他方法可以获取用户的朋友吗?

【问题讨论】:

不,没有办法。 invitable_friends 仅用于游戏且仅用于邀请用户,而 taggable_friends 仅用于标记用户。 【参考方案1】:

根据document,使用新的 Facebook Graph API 2.0,无法获取所有朋友。

好友列表现在只返回也使用您的应用的好友:列表 通过 /me/friends 端点返回的朋友现在仅限于 已授权您的应用的朋友列表

【讨论】:

作为 iOS SDK 一部分提供的 FBFriendPickerViewController 能够显示登录用户的所有朋友。我不知道 FB 是怎么允许的,并阻止“我/朋友”返回所有朋友列表。

以上是关于如何使用iOS SDK在FB中获取用户的所有朋友的主要内容,如果未能解决你的问题,请参考以下文章

为啥iOS上的FB SDK要求朋友列表的权限,而应用程序不要求它

Facebook ios sdk 共同好友

我如何在 iOS sdk 的 facebook 上获取好友生日和用户生日

如何在不刷新页面的情况下使用 JS SDK 检测从 fb 注销

如何使用 FB SDK 3.1 和 iOS<6 预览 facebook 状态更新?

fb ios sdk session用于现有的fb connect网站