iOS Facebook SDK 3.1在login时添加权限

我正在尝试按照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]; }]; 

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

截图

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

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

我通过在其他地方使用reauthorizeWithPublishPermissions从这里find临时解决scheme。 用户必须login到脸书两次阅读用户的电子邮件。

有什么解决办法可以一次完成吗?

感谢您的帮助!

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

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

根据Facebook的FBSession参考 ,作为一个最佳实践,您应该在开会时要求阅读权限。 然后在需要时再请求额外的权限。

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

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

 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]; 

希望这可以帮助。

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

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

 NSArray *permissions = [[NSArray alloc] initWithObjects:@"publish_stream", @"email", nil]; [facebook authorize:permissions]; [permissions release];