ios Facebook 登录显示 "Invalid Scope: basic_info"。使用 public_profile, user_friends 代替

标签 ios objective-c iphone

我希望应用程序在所有三种情况下都能正常工作。
我在我的 viewdidload 方法中使用了以下代码并实现了委托(delegate)方法。

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 工作正常但是 Case-II & Case-III 不工作

案例-I:(FB 应用程序未安装在设备上且仅 FB 凭据存储在设置中) 在这种情况下,当我按下登录按钮时,它会询问我的权限,我可以获取用户的基本信息。

案例-II:(安装了 FB 应用程序但 FB 凭据未存储在设置中) 在这种情况下,当我按下登录按钮时,它会将我带到已安装的 FB 以进行登录。我登录了,但显示错误 “无效范围:basic_info”。请改用 public_profile、user_friends。

案例 III:(未安装 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 "The operation couldn’t be completed. (com.facebook.sdk error 2.)" UserInfo=0x1cd61ba0 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginCancelled, com.facebook.sdk:ErrorInnerErrorKey=Error Domain=com.apple.accounts Code=7 "The Facebook server could not fulfill this access request: The proxied app cannot request publish permissions without having being installed previously." UserInfo=0x1cd622e0 {NSLocalizedDescription=The Facebook server could not fulfill this access request: The proxied app cannot request publish permissions without having being installed previously.}, com.facebook.sdk:ErrorSessionKey=, expirationDate: (null), refreshDate: (null), attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(null)>}

最佳答案

错误会告诉您如何修复它。

@"basic_info" 不再被 Facebook API 接受。您应该使用 @"public_profile"@"user_friends",或 @[@"public_profile", @"user_friends"](取决于您的用例)。

您在使用 @"public_profile" 时看到的错误与此 Facebook 请求无关。它与您请求 @"publish_actions" 的请求相关,因此出现消息“代理应用程序无法请求 publish 权限,而无需事先安装。”

关于ios Facebook 登录显示 "Invalid Scope: basic_info"。使用 public_profile, user_friends 代替,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26762892/

相关文章:

ios - UITextField 上的 Rightview 在编辑时不会消失

iphone - 我如何在 Root ViewController 中调用邮件功能?

ios - 带有 Json 的 UITableViewController

ios - 测试AVPlayer声音

ios - 核心数据 : when is deleteObject: done?

ios - Facebook FQL - 错误 : The operation couldn’t be completed.(com.facebook.sdk 错误 5。)

ios - 向 UITableView 发送自定义 TableViewCell 操作

ios - 如何初始化另一个 View Controller 的值

ios - dispatch_get_main_queue 和 dispatch_get_global_queue 的区别

php - 从 APNS 接收推送通知时自动增加角标(Badge)数