FBSDKLoginManager 失败并出现错误代码 - 308
Posted
技术标签:
【中文标题】FBSDKLoginManager 失败并出现错误代码 - 308【英文标题】:FBSDKLoginManager fails with error code - 308 【发布时间】:2015-06-18 18:50:48 【问题描述】:我们使用 FBSDKLoginManager 和我们自己的 UI 来登录 facebook。但是有时登录失败并显示错误代码308
。
根据文档,原因是 - FBSDKLoginBadChallengeString
,我已经在整个互联网上搜索以找出原因,但没有运气。
任何解释为什么会出现这个错误以及如何解决它?
【问题讨论】:
你看过这个吗? ***.com/questions/30643122/… .. 这个? ***.com/a/31480026/383919 【参考方案1】:出现此错误的原因是我的登录和注销代码使用了 FBSDKLoginManager 的两个不同实例。
在这里查看我的答案https://***.com/a/32659830/4068264
(我没有 cmets 的声誉,因此如果此回复不属于“答案”类别,请向社区道歉)
【讨论】:
【参考方案2】:这就是我重现并解决 com.facebook.sdk.login 错误 308 的方法。
用户 A 登录 Facebook,然后登录我的应用程序,最后使用流行的方式退出我的应用程序:
func logOutFromFacebook()
if (FBSDKAccessToken.currentAccessToken() != nil)
let loginManager = FBSDKLoginManager()
loginManager.logOut()
现在用户 B 登录 Facebook,登录我的应用程序并显示 com.facebook.sdk.login 错误 308。
如果我重新安装应用程序,新用户可以毫无问题地登录,但我当然不希望人们每次切换帐户时都重新安装应用程序。
解决此问题的解决方案是使用 FBSDKAccessToken.setCurrentAccessToken(nil),如下所示:
func logOutFromFacebook()
if (FBSDKAccessToken.currentAccessToken() != nil)
FBSDKAccessToken.setCurrentAccessToken(nil)
By itself I had no use for it, maybe you might want to uncomment.
// let loginManager = FBSDKLoginManager()
// loginManager.logOut()
希望它对某人有所帮助!
【讨论】:
【参考方案3】:如何解决 iOS10 中 Facebook 登录
的问题Error OSStatus -10814 occures when canOpenURL: can't find any application, that can open this URL (actually, Facebook trying to find their application by calling canOpenURL: with argument "fbauth2:/"). Printing happens inside of function, so you can't do anything with that. But if you will run your application on device with installed Facebook app, you will not see this error.
Error 308 occures because of the situation, when value, stored in keychain is not equal to value, that is stored in facebook completion parameters (for more information you can check -[FBSDKLoginManager completeAuthentication:expectChallenge:]).
It happens because Apple changed the way of working with keychain in ios 10. To fix this issue you simply should go to **Targets**->**Capabilities** and **enable keychain sharing** (it enables access to keychain for your app):
之后,您可以获取 Facebook 的数据。
希望对你有所帮助。
感谢曼迪普·辛格
【讨论】:
我在 xcode 中启用了钥匙串访问,但仍然收到 308 错误。我已经尝试了很多。请帮忙。 @EktaPadaliya,是的,妈妈,我能帮你什么忙。你能简单描述一下你的问题吗 我在尝试使用 facebook 登录时收到“操作无法完成。(com.facebook.sdk.login 错误 308。)”。我正在使用 SDK 4.22.1。 您能否与我分享您的项目,以便我可以正确审核并尽快为您提供更新。【参考方案4】:使用以下 pod
pod 'FacebookCore', '~> 0.5.0'
pod 'FacebookLogin', '~> 0.5.0'
pod 'FacebookShare', '~> 0.5.0'
pod 'FBSDKCoreKit', '~> 4.37.0'
pod 'FBSDKLoginKit', '~> 4.37.0'
pod 'FBSDKShareKit', '~> 4.37.0'
登录前也可以在 FBSDKLoginManager 上调用 logOut()
【讨论】:
【参考方案5】:使用以下 pod
pod 'FacebookCore', '~> 0.5.0'
pod 'FacebookLogin', '~> 0.5.0'
pod 'FacebookShare', '~> 0.5.0'
pod 'FBSDKCoreKit', '~> 4.37.0'
pod 'FBSDKLoginKit', '~> 4.37.0'
pod 'FBSDKShareKit', '~> 4.37.0'
登录前也调用 FBSDKLoginManager 上的 logOut()
【讨论】:
以上是关于FBSDKLoginManager 失败并出现错误代码 - 308的主要内容,如果未能解决你的问题,请参考以下文章