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

我试图通过这个代码访问我自己的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调用现在只返回已经使用该请求的应用程序的朋友。 换句话说,你不能取得你的整个朋友列表,只有朋友谁也使用该应用程序的问题。

更多信息:

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

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

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

在这种情况下,在你启动请求之前,你可以这样做

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

正如v1.0页上所述:

一旦用户使用2.0版(或更高版本)login到应用程序,为v1.0调用此边将继续返回更高版本的响应。

基本上,为了使这个工作,你的login方法也必须是一个旧的。

如果这是您需要的function,取决于您计划支持此应用程序的时间长短,更简单的方法可能就是使用较早版本的Facebook SDK,至less暂时是这样。 大概还有一年会支持这个function,那么要么你的需求可能会改变,所以你可以更新,否则Facebook可能会提供给我们一个重新获取用户的整个朋友列表的能力,这很不幸。

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

还有一些其他可能的选项可能会使用,具体取决于您尝试使用好友列表的方式。 在这个网站的其他答案有一堆信息, 这里有一个很好的讨论 。

编辑

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