朋友列表的Facebook Graph API在iOS上返回nil

时间:2014-05-26 00:53:28

标签: 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)

我错过了什么吗?

1 个答案:

答案 0 :(得分:7)

您使用的是API的API吗? Facebook最近做了一个很大的改变,所以这个API调用现在只返回使用了发出请求的应用程序的朋友。换句话说,您无法获取整个朋友列表,只能访问相关应用的朋友。

更多信息:

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所述:

  

用户使用2.0版(或更高版本)登录应用后,   为v1.0调用此边缘将继续返回更高版本的版本   响应。

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

如果这是您需要的功能,取决于您计划支持此应用程序的时间长短,更简单的选择可能只是使用旧版本的Facebook SDK,至少暂时如此。它将在大约一年内得到支持,此时您的要求可能会发生变化,因此您可以更新,或者Facebook可能会为我们提供再次获取用户的整个朋友列表的能力,这很不可能。

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

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

修改

西蒙克罗斯指出了一些我不知道的信息。如果您的应用是在2014年4月30日之后创建的,则无论SDK版本还是其他任何内容,您都无法使用v1.0 API。所以基本上,这种解决方法仅适用于在4月30日之前已经在他们的app中使用1.0 API的人。