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

步骤是

  1. 设置Facebook启动

FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

  1. 设置打开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)

  2. 修复如下图所示的钥匙串权限问题

iOS 9钥匙串修复

您需要在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。