3

我正在尝试遵循 Facebook SDK 3.1 教程:Scrumptious 并将 FB 集成到我的应用程序中。

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {

NSArray *permissions = @[@"email"];

return [FBSession openActiveSessionWithReadPermissions:permissions
                                          allowLoginUI:allowLoginUI
                                     completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
                                         [self sessionStateChanged:session state:state error:error];
                                     }];

我想添加额外的权限,但它只显示身份验证中的基本信息,如下图所示:

截屏

我还使用了不推荐使用的方法,得到了相同的结果:

[FBSession openActiveSessionWithPermissions:permissions allowLoginUI:allowLoginUI completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
    [self sessionStateChanged:session state:state error:error];
}];

我通过在其他地方使用从这里找到了临时解决方案。reauthorizeWithPublishPermissions用户必须登录 facebook 两次才能阅读用户电子邮件。

有什么解决方案可以一次完成吗?

感谢您的帮助!

编辑:关于 stackoverflow的另一篇文章openActiveSessionWithPublishPermissions,使用,仍然与屏幕截图具有相同的结果。

4

3 回答 3

5

根据Facebook FBSession Reference,作为最佳实践,您应该在打开会话时请求读取权限。然后在您需要时请求其他权限。

要求初始权限请求仅代表只读权限。

其次,我在下面尝试了这段代码,我得到了正确的权限要求。

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email", nil];

[FBSession openActiveSessionWithReadPermissions:permissions
                                   allowLoginUI:YES
                              completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
 [self sessionStateChanged:session state:state error:error];}];
 [permissions release];

希望这可以帮助。

于 2012-10-24T09:54:48.307 回答
2

我会在 Facebook 应用的权限设置中检查 Facebook.com 上的权限,并确保它们匹配。我相信他们说您可以在 iOS 代码中设置权限,但我建议您也匹配 FB 应用程序设置中的权限。

于 2012-10-18T13:19:22.980 回答
2

http://developers.facebook.com/docs/reference/login/#permissions

这是一个如何使用它们的例子

NSArray *permissions = [[NSArray alloc] initWithObjects:@"publish_stream", @"email", nil];
[facebook authorize:permissions];
[permissions release];
于 2012-10-18T13:41:43.247 回答