Ios Facebook登录错误-生成URL时出现未知错误(com.Facebook.sdk.core错误3)
我在尝试登录Facebook时遇到以下错误:Ios Facebook登录错误-生成URL时出现未知错误(com.Facebook.sdk.core错误3),ios,swift,facebook-login,google-login,Ios,Swift,Facebook Login,Google Login,我在尝试登录Facebook时遇到以下错误: 可选(Error Domain=com.facebook.sdk.core code=3“(null)”UserInfo={com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Unknown Error building URL.}) 我在其他帖子中读到,这是FBSDKLoginKit版本sing 4.39.0中的一个bug,解决方案降级到4.38.o,这给了我另一个错误:Firebase Auth Inte
可选(Error Domain=com.facebook.sdk.core code=3“(null)”UserInfo={com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Unknown Error building URL.})
我在其他帖子中读到,这是FBSDKLoginKit版本sing 4.39.0中的一个bug,解决方案降级到4.38.o,这给了我另一个错误:Firebase Auth Interop/FIRAuth Interop.h'文件在FIRAuth.m#import中找不到
由于我对社交登录还不熟悉,Facebook开发者页面上的指南与swift不符,有些是obj-c中的,我可能会将其误译为swift。你能指出问题出在哪里吗?
此外,FBSDKLogin框架在frameworks文件夹和pods/frameworks文件夹中以红色突出显示。
代码如下:
AppDelegate
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge], completionHandler: ({_,_ in
}))
UNUserNotificationCenter.current().delegate = self
var error: NSError?
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
} catch let error1 as NSError{
error = error1
print("could not set session. err:\(error!.localizedDescription)")
}
do {
try AVAudioSession.sharedInstance().setActive(true)
} catch let error1 as NSError{
error = error1
print("could not active session. err:\(error!.localizedDescription)")
}
window?.tintColor = UIColor.blue
// Use Firebase library to configure APIs
FirebaseApp.configure()
// goggle only
GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID
GIDSignIn.sharedInstance().delegate = self
// Facebook SDK
// FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
// return true
}
我将Google登录和Facebook放在其中的开放URL:
// start google sign in methods
@available(iOS 9.0, *)
func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
-> Bool {
// google only
// return
// GIDSignIn.sharedInstance().handle(url,
// sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
// annotation: options[UIApplicationOpenURLOptionsKey.annotation])
// both google and facebook
let googleDidHandle = GIDSignIn.sharedInstance().handle(url,
sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String,
annotation: options[UIApplicationOpenURLOptionsKey.annotation])
guard let source = options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String else { return false }
let annotation = options[UIApplicationOpenURLOptionsKey.annotation] as? String
let facebookDidHandle = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: source, annotation: annotation)
// return FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: source, annotation: annotation)
return googleDidHandle || facebookDidHandle
}
使用Facebook方法登录vc时出现错误:
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
if error == nil {
print("User just logged in via Facebook")
let credentials = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)
Auth.auth().signInAndRetrieveData(with: credentials) { (user, error) in
if (error != nil) {
print("Facebook authentication failed")
} else {
print("Facebook authentication succeed")
}
}//)
} else {
print("An error occured the user couldn't log in")
print(error)
}
}
我发现了问题。它与代码无关。这似乎是Facebook SDK最新两个版本中的一个bug,所以我将其降级为
pod 'FBSDKCoreKit', '4.36.0'
pod 'FBSDKLoginKit', '4.36.0'
pod 'FacebookCore', '0.4'
pod 'FacebookLogin', '0.4'
它运行平稳。
面团为某人4.38版解决了这个问题它不是我的车。
希望这对其他人有用。这是导致此错误的4.39.0版Facebook SDK错误。为了解决这个错误,只需将CoreKit和LoginKit降级到4.38.0,清除派生数据以及清理构建文件夹(CMD+OPTION+SHIFT+K) 如果您使用的是FacebookCore和FacebookLogin,请执行以下操作
pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'
GitHub上的这一解决方案对我很有效: 还有其他一些不同的变通方法也适用于其他人 我的pod文件工作时是这样的:
pod 'FBSDKCoreKit', :git => 'https://github.com/facebook/facebook-objc-sdk.git', :branch => 'master'
pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'
看来这4.39.1已经在2019年1月15日发布了热修复程序(显然是在未来一周)
4.38给了我一套全新的错误。所以4.36对我来说很有魅力。谢谢。你的评论足以让人们知道该做什么,而不是转载并验证你的答案:)对不起,我不明白你的意思。问题已在4.39.1 great News@NithinMichael上解决。谢谢你让我们都知道。@Ernest。很高兴它帮了你。问题已在4.39.1伟大新闻@NithinMichael上解决。感谢您让我们大家都知道。我刚想说的是,问题已在4.39.1中解决。问题已在4.39.1中解决
pod 'FBSDKCoreKit', :git => 'https://github.com/facebook/facebook-objc-sdk.git', :branch => 'master'
pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'