FBSDKlogin错误代码:308在Objective-C中
我不断收到
“错误域= com.facebook.sdk.login代码= 308”操作无法完成。 (com.facebook.sdk.login错误308.)“”
尝试从我的设备loginFacebook。
我的代码在模拟器上工作,但不在实际的设备上。 有没有人跑到这个错误代码之前? 我会很乐意根据要求分享代码。
一个解决scheme,至less对我来说,就是不能通过Xcodedebugging器在设备上运行。 如果我在debugging器外部的设备上运行应用程序,Facebooklogin工作正常。 如果我通过debugging器在SIM卡中运行应用程序,Facebooklogin工作正常。
只有当我通过Xcodedebugging器在设备上运行应用程序时,我每次都会收到com.facebook.sdk.login错误308。
下面的解决scheme适用于运行在Xcode 8上的iOS9 +,适用于Swift3.0
步骤是
- 设置Facebook启动
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
-
设置打开url
guard let source = options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String else { return false } let annotation = options[UIApplicationOpenURLOptionsAnnotationKey] as? String return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: source, annotation: annotation)
- 修复如下图所示的钥匙串权限问题
您需要在Capabilities选项卡中启用Keychain Sharing。
我有完全相同的问题,并能够通过修改Info.plistfind解决scheme
我已经将所有可能的scheme添加到LSApplicationQueriesSchemes
完整的列表如下所示:
<key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fbapi20130214</string> <string>fbapi20130410</string> <string>fbapi20130702</string> <string>fbapi20131010</string> <string>fbapi20131219</string> <string>fbapi20140410</string> <string>fbapi20140116</string> <string>fbapi20150313</string> <string>fbapi20150629</string> <string>fbauth</string> <string>fbauth2</string> <string>fb</string> <string>fb-messenger-api20140430</string> <string>fb-messenger-platform-20150128</string> <string>fb-messenger-platform-20150218</string> <string>fb-messenger-platform-20150305</string> <string>fb-messenger-api</string> <string>fbshareextension</string> </array>
我得到完全相同的东西FB SDK 4.6.0 Xcode 7.0 iOS9。 所有在facebook开发者网站上的设置和说明都遵循了这封信。 上述解决scheme都不适合我。 我发现,当您部署到设备实时并在执行login过程时反馈到Xcode控制台时,行为会变得更糟。 如果它实际上logging你的话,那真是太幸运了。 如果您在部署后重新启动应用程序,则似乎performance得更加可预测。 – 这是事实!
当它决定无法login时,会导致以下错误:
Error Domain=com.facebook.sdk.login Code=308 "(null)"
我的解决scheme在Xcode7.1,Swift2.0
第1步。清理你的生成文件夹: option
+ command
+ K
或者:selectProduct
> Clean
第2步。清理派生数据:select“ Window
>“ Projects
:
然后selectDelete
:
我有同样的问题,并修复刷新系统凭据
[FBSDKLoginManager renewSystemCredentials:^(ACAccountCredentialRenewResult result, NSError *error) { [[[YourAuthManager manager] facebookLoginManager] logInWithReadPermissions:@[@"email"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { if (error) { // Handle error } else if (result.isCancelled) { // Handle cancellations } else { // If you ask for multiple permissions at once, you // should check if specific permissions missing if ([result.grantedPermissions containsObject:@"email"]) { // Do work } } }]; }];
这个解决scheme不如重新安装激进,你可以保证你的用户不必这样做。 我的猜测是,FBSDK 4.6与iOS 9系统FBauthentication证书有一些冲突。
编辑:经过一段时间的testing,一直在发生,不像以前那么频繁,但仍然是一个问题,所以我们降级到了以前版本的FB SDK。 希望有人find一个更好的解决scheme。
有一些在FBs代码挖掘,看起来这只是一个权利问题。
FB在login时使用钥匙串来存储授权挑战。 当它返回时试图从钥匙串获取值并失败。 看到这个回答更多的信息。
安全授权可能会在configuration文件之间发生变化,正如我们所知,保持我们的configuration文件和构buildconfiguration和设备/模拟是像放牧猫一样。 这可以解释为什么人们会遇到这种不一致的行为。
因此,假定在生产环境中,一切都可以正常工作,如果在testing过程中无法正常工作,则需要仔细检查供应configuration文件中的权利。
在我的情况下,通过更新到最新的FB SDK来修复它。 4.10目前。
我通过卸载应用程序并重新安装解决了问题,并立即工作。
该错误可能与iOS 9有关。自iOS 9以来,我认为SDK使用SafariViewController,并且在您已经logging时似乎会产生问题。
我在xcode 7.1 ios 9.1 FB SDK 4.7.1上遇到同样的错误。 。
卸载,安装和testing没有Xcode第一次正常工作。 这将允许你重新插入设备并运行它至less几次(这似乎有点不一致…)
同样的问题FB SDK 4.5.1并没有上述的解决scheme为我工作。 我通过添加Bolts框架来通过拖放(从FacebookSDK目录)来解决这个问题。
然后在appDelegate中添加螺栓框架
#import <bolts/bolts.h>
在FBSDKDelegate方法loginButtonWillLogin把这个
- (BOOL) loginButtonWillLogin:(FBSDKLoginButton *)loginButton{ [FBSDKAccessToken setCurrentAccessToken:nil]; return YES;}
更新到最新的(4.11)FB SDK也为我解决了这个问题。 不要忘记更新后清理你的项目,看看它是否适合你!
通过添加新的plist键/值,我可以在SDK9.0.0的iOS9上重新login
<key>FacebookDisplayName</key> <string>{Your App Name}</string>
源代码 。
我还采取了其他一些答案中的步骤来实现一个共享的FBSDKLoginManager()实例。
要解决这个问题,你需要启用“钥匙串共享”function。