0

我一直在使用适用于 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";}

非常感谢任何想法。

4

2 回答 2

2

据我所知,您遇到了 2.0 API 与未运行您的应用程序并授予其任何权限的用户交互的限制。

这与 1.0 大相径庭,在 1.0 中,您的应用程序的用户可以允许您的应用程序访问有关他们朋友的数据。在新 API 中,朋友必须使用过您的应用并授予您的应用查看其数据的权限。

Facebook 实现这一点的方法之一是用户 ID 号在 2.0 中是特定于应用程序的。即,如果您碰巧知道某人的 Facebook 用户 ID,可能来自基于 1.0 的应用程序,那么您的应用程序将无法使用它。没有办法再询问用户朋友的完整列表了,尽管有一些 API 调用可以做一些事情,比如给朋友标记照片或邀请没有使用你的应用程序的朋友 - 但这仍然不能让你访问他们的个人资料。这些 API 为您提供的 ID 不能以这种方式使用。

此处描述了更改:升级到 2.0 用户 ID

如果这些对您来说似乎非常严格,那么您并不孤单。感谢那里的垃圾邮件发送者。

于 2014-05-07T20:08:10.493 回答
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);
}];
于 2014-05-08T07:12:32.103 回答