iOS - Facebook登录错误 - 构建URL时出现未知错误(com.facebook.sdk.core错误3)

问题描述 投票:21回答:6

我正在使用Facebook登录为我的iOS应用程序开发iOS 8及更高版本。 (正在使用最新的Facebook SDK)

我遵循了Facebook官方指南中描述的所有基本步骤。但是,当我单击登录按钮时,它会给我以下错误:

构建URL的未知错误(com.facebook.sdk.core错误3)

我已经检查过,看看我可能做错了什么,但一切似乎都按照指南,我已经被困在这里一天了。

FB登录代表的代码:

class FBLoginDelegate: NSObject,  FBSDKLoginButtonDelegate  {


func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!){
    if(error == nil){
        print("Logged In from Btn")
    }else{
        print("Error: \(error.localizedDescription)") //Here it gives the error 
    }

}
}

FB登录按钮代码:

      var fbLoginBtnDelegate = FBLoginDelegate()
    let fbBtnWidth = self.view.bounds.width - (self.fbContainerLeftConstraint.constant + self.fbContainerRightConstraint.constant)
    let fbLoginButton = FBSDKLoginButton(frame: CGRectMake(0,0,fbBtnWidth,self.fbButtonContainer.bounds.size.height))

    self.fbButtonContainer.addSubview(fbLoginButton)
    fbLoginButton.readPermissions = ["public_profile", "user_friends", "email", "user_birthday"]
    fbLoginButton.delegate = fbLoginBtnDelegate
ios facebook facebook-graph-api facebook-login
6个回答
64
投票

如果您将Facebook iOS SDK升级到版本4.39.0,则会出现导致此错误的错误。降级到4.38.1将帮助您解决此问题。一定要降级FBSDKCoreKit和FBSDKLoginKit。

pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'

请务必清理构建文件夹并重新构建SDK。

更新:此错误已在4.39.1 SDK版本中修复。 https://developers.facebook.com/docs/ios/change-log-4x/


7
投票

这是版本4.39.0中的Facebook SDK错误,导致此错误。为了解决这个问题,只需将CoreKit和LoginKit降级到4.38.0,清除派生数据以及清理构建文件夹(CMD + OPTION + SHIFT + K)。而4.38.1也可以正常工作。

pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'

如果您使用的是FacebookCore和FacebookLogin,请执行以下操作。

pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'

2
投票

对我来说,问题是在CFBundleURLTypesCFBundleURLSchemes> Info.plist中显示的Facebook App ID被错误地拼写出来。

我从.xcconfig文件导入应用程序ID,以便其基础值根据我是运行Debug还是Release方案而改变。但是,当我打印出plist文件时,从xcconfig文件中读取时,应用程序ID周围会出现不必要的引号。例如,URL方案应该是fb012345678,它是fb"012345678"

我尝试将应用程序ID正确编码到Info.plist中,如Facebook指南中所述,并且FBSDKLoginButton正常工作。 Safari出现在Facebook登录界面。您不必对ID进行硬编码 - 只需确保它们在Info.plist中正确替换即可。


1
投票

在终端&导航到项目文件夹使用

pod update

更新到当前版本4.39.1


0
投票

我遵循react-native-fbsdk指令,您应该将Framework文件/文件夹复制到项目中。因此,上面给出的Cocoapod方法对我不起作用。

我所做的是从项目中删除现有的Framework文件(右键单击Framework项目 - >删除 - >是全部删除),然后通过从以下位置下载它们再次添加以前版本的Frameworks:

https://developers.facebook.com/docs/ios/downloads/


0
投票

为了让这个工作,我必须做两件事。

1. Downgrade pods to

pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'

2. Remove -ObjC from other linker flags

虽然这已经在facebook开发者门户网站上提出过。这产生了以下错误:

com.facebook.sdk:FBSDKErrorDeveloperMessageKey =构建URL的未知错误。

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.