iOS Facebook SDK 3.1在登录时添加权限

EES*_*EES 3 iphone xcode facebook objective-c ios

我试图遵循Facebook SDK 3.1教程:美味并将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];
                                     }];
Run Code Online (Sandbox Code Playgroud)

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

截图

我也使用了弃用的方法,我得到了相同的结果:

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

我发现,从临时的解决方案在这里通过使用reauthorizeWithPublishPermissions在别的地方.用户必须登录Facebook两次才能阅读用户电子邮件.

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

谢谢你的帮助!

编辑:stackoverflow上的另一篇文章,使用openActiveSessionWithPublishPermissions,仍然与截图相同的结果.

Sna*_*ker 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];
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.