我正在尝试遵循 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];
}];
我从 here 找到了临时解决方案通过在其他地方使用 reauthorizeWithPublishPermissions
。用户必须登录 facebook 两次才能阅读用户电子邮件。
有什么解决方案可以一次完成吗?
感谢您的帮助!
编辑:另一个 post在 stackoverflow 上,使用 openActiveSessionWithPublishPermissions
,仍然得到与屏幕截图相同的结果。
最佳答案
根据Facebook FBSession Reference ,作为最佳实践,您应该在打开 session 时请求读取权限。然后在需要时请求额外的权限。
It is required that initial permissions requests represent read-only permissions only.
其次,我尝试了下面的这段代码,我得到了正确的权限要求。
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];
希望这对您有所帮助。
关于iphone - iOS Facebook SDK 3.1 登录时添加权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12955635/