我一直在使用适用于iOS的Facebook SDK v1.0而没有任何问题。我试图简单地获取另一个facebook用户的名字和姓氏,而不是当前拥有该会话的用户,但是对于新版本,这个调用失败了。
登录时我使用FBLoginView,我这样设置:
facebookLoginView.loginBehavior = FBSessionLoginBehaviorUseSystemAccountIfPresent;
facebookLoginView.readPermissions = @[@"public_profile", @"email", @"user_likes"];
facebookLoginView.delegate = self;
然后,当我获得权限时,我有一个活动会话(我检查了访问令牌,它对我正在使用的应用程序有效 - 我用图形api资源管理器检查过),我这样做:
[FBRequestConnection startWithGraphPath:@"https://graph.facebook.com/100005627796553" parameters:nil HTTPMethod:@"GET" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
NSLog(@"%@", result);
}];
控制台日志,简单地说,而不是包含用户的配置文件数据的json字符串(公共字符串):
{id = "https://graph.facebook.com/100005627796553";}
非常感谢任何想法。
答案 0 :(得分:2)
根据我的理解,您遇到了2.0 API与未运行您的应用并为其授予任何权限的用户进行交互的限制。
这与1.0完全不同,您的应用用户可以允许您的应用访问有关其朋友的数据。在新API中,朋友必须已使用您的应用并授予您应用的权限才能查看其数据。
Facebook实现这一目标的方法之一是用户ID号在2.0中是应用特定的。即如果您碰巧知道某人的Facebook用户ID,可能来自基于1.0的应用程序,那么您的应用程序无法使用它。虽然有一些API调用来做与朋友标记照片或邀请没有使用过你的应用的朋友,但无法再询问用户朋友的完整列表,但这仍然无法让您访问他们的档案。这些API为您提供的ID不能以这种方式使用。
此处描述了更改:Upgrading to 2.0 User IDs
如果这些对您来说似乎非常严格,那么您并不孤单。感谢垃圾邮件发送者。
答案 1 :(得分:0)
事实证明,问题根源于我用于调用的URL,正确的版本不必包含“https://graph.facebook.com/”部分,只需包含URL的其余部分,如下所示:
[FBRequestConnection startWithGraphPath:@"https://graph.facebook.com/100005627796553" parameters:nil HTTPMethod:@"GET" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
NSLog(@"%@", result);
}];