Facebookでログインしようとすると、このエラーが表示されます。Optional(Error Domain=com.facebook.sdk.core Code=3 "(null)" UserInfo={com.facebook.sdk:FBSDKErrorDeveloperMessageKey=Unknown error building URL.})
他の投稿で、FBSDKLoginKitのバージョン4.39.0のバグであり、ソリューションが4.38.oにダウングレードされているバグを読みました。エラー:Firebase Auth Interop/FIRAuth Interop.h' file not found in the FIRAuth.m #import <FirebaseAuthInterop/FIRAuthInterop.h>
私はソーシャルログインが初めてであり、Facebook開発者ページのガイドはSwiftで最新のものではなく、一部はobj-cにあります。問題はどこにありますか?また、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の最新の2つのバージョンのバグのようですので、ダウングレードしました
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)。
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'
2019年1月15日にリリースされたこの4.39.1のホットフィックスがあったようです(明らかに1週間後)
GitHubのこの回避策は私のために働いた:
https://github.com/facebook/facebook-Swift-sdk/issues/301#issuecomment-44636375
他の人々のために働いたいくつかの異なる回避策もあります。
動作したとき、私のポッドファイルは次のようになりました。
pod 'FBSDKCoreKit', :git => 'https://github.com/facebook/facebook-objc-sdk.git', :branch => 'master'
pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'