Facebook 登录在某些 iOS 设备上总是出错

Posted

技术标签:

【中文标题】Facebook 登录在某些 iOS 设备上总是出错【英文标题】:Facebook Login always erroring out on some iOS devices 【发布时间】:2015-02-02 19:10:30 【问题描述】:

我有一个简单的应用程序,我通过 ios 上的 Facebook SDK 集成 Facebook 登录。当用户点击“使用 Facebook 注册”按钮时,我有以下代码段:

// Open a session showing the user the login UI
// You must ALWAYS ask for public_profile permissions when opening a session
[FBSession openActiveSessionWithReadPermissions:@[@"public_profile", @"email"]
                                   allowLoginUI:YES
                              completionHandler:
 ^(FBSession *session, FBSessionState state, NSError *error) 

这适用于大多数设备,但在某些设备上,此错误会出现 NSError 返回为:

Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed. (com.facebook.sdk error 2.)" 
UserInfo=0x178467a40 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."

错误说我需要申请发布许可,但我要求“public_profile”和“email”我错过了什么?

更新:在设备上,失败似乎是用户在“设置”中登录 FaceBook 的地方。我希望 Facebook SDK 能做正确的事,而不是它以某种方式完成上述工作。我还需要做些什么来完成这项工作吗?没有实现 SocialKit 和 Facebook SDK?

【问题讨论】:

【参考方案1】:

经过大量实验后发现问题,在权限中请求“public_profile”以某种方式使iOS在请求中请求读/写权限,并触发上述错误。 - 请求读/写权限失败有多种线程。

只要求“电子邮件”就足够了,因为这会隐式获取公共个人资料。

【讨论】:

以上是关于Facebook 登录在某些 iOS 设备上总是出错的主要内容,如果未能解决你的问题,请参考以下文章

应用程序在某些设备上被错误配置为 Facebook 登录 [重复]

Kotlin Facebook 登录、登录并跳过弹出窗口

ios - 一台设备上的多个 Facebook 帐户

IOS中的Facebook登录适用于模拟器,但不适用于安装了本机应用程序的设备

在用户已登录 Facebook 的设备上登录时如何跳过 Facebook 的权限页面

React-Native Expo,Facebook 登录无法在 Android 设备上运行