ios Facebook 登录显示“无效范围:basic_info”。改用 public_profile, user_friends
Posted
技术标签:
【中文标题】ios Facebook 登录显示“无效范围:basic_info”。改用 public_profile, user_friends【英文标题】:ios Facebook Login showing "Invalid Scope: basic_info". use public_profile, user_friends instead 【发布时间】:2014-11-05 17:01:21 【问题描述】:我希望应用应该在所有三种情况下都能正常工作。 我在 viewdidload 方法中使用了以下代码并实现了委托方法。
FBLoginView *fb_loginView = [[FBLoginView alloc] init];
fb_loginView.readPermissions = @[@"basic_info", @"email", @"user_friends"];
fb_loginView.delegate = self;
fb_loginView.frame = CGRectMake(10, 250, 300, 100);
[self.view addSubview:fb_loginView];
Case-I 工作正常但是 案例二和案例三不工作
案例-I:(设备上未安装 FB 应用程序,设置中仅存储 FB 凭据) 在这种情况下,当我按下登录按钮时,它会询问我的权限,我可以获取用户的基本信息。
案例-II:(已安装 FB 应用但 FB 凭据未存储在设置中) 在这种情况下,当我按下登录按钮时,它会将我带到为登录而安装的 FB。我登录了,但显示错误 “无效范围:basic_info”。请改用 public_profile、user_friends。
案例三:(未安装 FB 应用且未将 FB 凭据存储在设置中) 在这种情况下,当我按下登录按钮时,它会将我带到 ios Safari 浏览器进行 fb 登录。我登录了,但显示同样的错误 “无效范围:basic_info”。请改用 public_profile、user_friends。
我用的时候
fb_loginView.readPermissions = @[@"public_profile", @"email", @"user_friends"];
那么 Case-I & Case-II 工作正常,但 Case-III 显示以下错误。
Error = Error Domain=com.facebook.sdk Code=2 "操作不能 完成。 (com.facebook.sdk 错误 2。)“UserInfo=0x1cd61ba0 com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginCancelled, com.facebook.sdk:ErrorInnerErrorKey=错误域=com.apple.accounts Code=7 "Facebook 服务器无法完成此访问请求: 被代理的应用程序无法请求发布权限 以前安装过。” UserInfo=0x1cd622e0 NSLocalizedDescription=The Facebook 服务器无法完成此访问请求:代理应用 未经安装无法请求发布权限 以前。, com.facebook.sdk:ErrorSessionKey=, 过期日期:(空),刷新日期:(空),尝试刷新日期: 0001-12-30 00:00:00 +0000,权限:(null)>
【问题讨论】:
【参考方案1】:错误告诉你如何修复它。
@"basic_info"
不再被 Facebook API 接受。您应该改用@"public_profile"
或@"user_friends"
或@[@"public_profile", @"user_friends"]
(取决于您的用例)。
您在使用@"public_profile"
时看到的错误与此 Facebook 请求无关。它与您请求 @"publish_actions"
的请求有关,因此消息“代理的应用程序无法请求 publish 权限,而无需事先安装。”
【讨论】:
以上是关于ios Facebook 登录显示“无效范围:basic_info”。改用 public_profile, user_friends的主要内容,如果未能解决你的问题,请参考以下文章
如何知道用户已经在 iOS 应用上完成 Facebook 登录
iOS Facebook SDK 登录页面显示在受保护页面之前