ios - 用于好友列表的 Facebook Graph API 在 iOS 上返回 nil

标签 ios objective-c facebook-graph-api facebook-ios-sdk

我正在尝试通过此代码访问我自己的 Facebook 好友列表,但生成的 JSON 不返回任何数据。

FBRequest *request = [FBRequest requestWithGraphPath:@"me/friends" parameters:nil HTTPMethod:@"GET"];

我正在设置这样的权限(我正在使用 PARSE)

[PFFacebookUtils linkUser:[PFUser currentUser] permissions:@[@"user_friends"] block:^(BOOL succeeded, NSError *error)

我错过了什么吗?

最佳答案

您使用的是 API 的 V2 版吗? Facebook 最近做了一个很大的改变,因此这个 API 调用现在只返回使用过发出请求的应用程序的 friend 。换句话说,您无法获取整个 friend 列表,只能获取也在使用相关应用的 friend 。

更多信息在这里:

https://developers.facebook.com/docs/graph-api/reference/v2.0/user/friends

您可以使用页面右上角的下拉菜单查看 1.0 版和 2.0 版之间的区别。

如果您使用的是新的 2.0 iOS SDK,FBRequest 有一个实例方法可以针对特定请求使用不同版本的 API。

在这种情况下,在你开始请求之前,你可以做

[request overrideVersionPartWith:@"v1.0"];

v1.0 page 中所述虽然:

Once a user has logged into an app using version 2.0 (or later), calling this edge for v1.0 will continue to return the later version's response.

基本上,为了使这项工作有效,您的登录方法也必须是旧的。

如果这是您需要的功能,具体取决于您计划支持此应用的时长,更简单的选择可能是使用旧版本的 Facebook SDK,至少目前如此。它将继续支持大约一年,届时您的要求可能会发生变化,因此您可以直接更新,或者 Facebook 可能会为我们提供再次获取用户的整个好友列表的能力,不幸的是,这不太可能。

使用旧 API 的最后一个版本是 3.13.1

您还可以使用其他一些选项,具体取决于您尝试对好友列表执行的操作。本网站的其他答案中有大量信息,here is one with a good discussion .

编辑

Simon Cross 指出了一些我不知道的信息。如果您的应用程序是在 2014 年 4 月 30 日之后创建的,则无论 SDK 版本或其他任何版本,您都无法使用 v1.0 API。所以基本上,此解决方法仅适用于在 4 月 30 日之前已经在其应用中使用 1.0 API 的用户。

关于ios - 用于好友列表的 Facebook Graph API 在 iOS 上返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23861365/

相关文章:

具有大量滚动功能的 iOS UI 自动化

ios - 未调用 CXProviderDelegate 方法

iphone - 如何使用 facebook graph api 获取与好友相关的照片?

ios - 不支持的操作 - 不允许应用程序监听设备锁定通知

ios - 如何在长时间按压后停止我的 UICollectionViewCell 摇晃?

ios - 如何在 Swift 中更改 UITableView 单元格文本宽度

iOS:Objective-C:由于 ipad 时间显示 12 小时/24 小时导致的输出问题

ios - 使用 extern 使变量全局化时获取 "Undefined symbols for architecture armv7"

javascript - Facebook Messenger 嵌套持久菜单错误

objective-c - 我在模拟器上重新启动应用程序时,FBSDKAccess token 每秒返回 nil