我正在使用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
答案 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,以便其基础值发生变化,具体取决于我是否运行Debug
或Release
方案。但是,当我打印出plist文件时,从xcconfig
文件中读取时,应用程序ID周围会出现不必要的引号。例如,如果网址方案应为fb012345678
,则为fb"012345678"
。
我尝试将应用ID正确地硬编码到Facebook指南中所述的Info.plist
,而FBSDKLoginButton
刚刚起作用。 Safari出现在Facebook登录界面。您不必对ID进行硬编码 - 只需确保在Info.plist
中正确替换它们。
答案 3 :(得分:1)
在终端中,导航到项目文件夹,使用
更新到当前版本4.39.1
答案 4 :(得分:0)
我遵循了react-native-fbsdk的说明,在该说明中,您应该将Framework文件/文件夹复制到项目中。因此,上面给出的Cocoapod方法对我不起作用。
我所做的是从项目中删除现有的Framework文件(右键单击Framework项目->删除->是,全部删除),然后通过从以下位置下载它们来再次添加Framework的先前版本:
答案 5 :(得分:0)
我必须做两件事才能使它工作。
pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'
尽管在Facebook开发人员门户网站中已建议这样做。这将产生以下错误:
com.facebook.sdk:FBSDKErrorDeveloperMessageKey =未知的错误构建URL。
希望这会有所帮助。