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

时间:2016-02-07 00:43:45

标签: ios facebook facebook-graph-api facebook-login

我正在使用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

6 个答案:

答案 0 :(得分:64)

如果将Facebook iOS SDK升级到版本4.39.0,则存在一个导致此错误的错误。降级到4.38.1将帮助您解决此问题。确保同时降级FBSDKCoreKit和FBSDKLoginKit。

@Id
Long ID;

@Column(name = "PRODUCT_ID", nullable = false, length = 128)
private String productId;

@ManyToOne
@JoinColumn(name = "PARENT_ID")
private ProductEntity parent;

请确保清理构建文件夹并重新构建SDK。

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

答案 1 :(得分: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 :(得分:2)

对我来说,问题是CFBundleURLTypes>中显示的Facebook App ID CFBundleURLSchemes中的Info.plist拼写错误。

我正在从.xcconfig文件中导入应用ID,以便其基础值发生变化,具体取决于我是否运行DebugRelease方案。但是,当我打印出plist文件时,从xcconfig文件中读取时,应用程序ID周围会出现不必要的引号。例如,如果网址方案应为fb012345678,则为fb"012345678"

我尝试将应用ID正确地硬编码到Facebook指南中所述的Info.plist,而FBSDKLoginButton刚刚起作用。 Safari出现在Facebook登录界面。您不必对ID进行硬编码 - 只需确保在Info.plist中正确替换它们。

答案 3 :(得分:1)

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

pod更新

更新到当前版本4.39.1

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

我必须做两件事才能使它工作。

1。将Pod降级到

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

2。从其他链接器标记中删除-ObjC

尽管在Facebook开发人员门户网站中已建议这样做。这将产生以下错误:

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

希望这会有所帮助。