用于朋友列表的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的人。