IOS 8以降で開発されているiOSアプリにFacebookログインを使用しています。 (最新のFacebook SDKが使用されています)
私はFacebookの公式ガイドに記載されているすべての基本的な手順に従いました。しかし、ログインボタンをクリックすると、次のエラーが表示されます。
不明なURL構築エラー(com.facebook.sdk.coreエラー3)
私は間違ったことを確認するためにチェックしましたが、すべてがガイドのように見え、1日ここにとどまっています。
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
Facebook iOS SDKをバージョン4.39.0にアップグレードした場合、このエラーの原因となるバグがあります。 4.38.1にダウングレードすると、この問題の解決に役立ちます。 FBSDKCoreKitとFBSDKLoginKitの両方を必ずダウングレードしてください。
pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'
必ずビルドフォルダーをクリーンアップして、SDKを再ビルドしてください。
update:このバグは4.39.1 SDKリリースで修正されました。 https://developers.facebook.com/docs/ios/change-log-4x/
これは、バージョン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'
私にとっての問題は、Info.plist
のCFBundleURLTypes
> CFBundleURLSchemes
に示されているFacebookアプリIDのスペルが間違っていることでした。
私は.xcconfig
ファイルからアプリIDをインポートしていたため、Debug
またはRelease
スキームを実行しているかどうかに応じて、基になる値が変化します。しかし、plistファイルを印刷すると、xcconfig
ファイルから読み取ったときに、アプリIDの前後に不要な引用符がありました。たとえば、URLスキームがfb012345678
である必要がある場合、それはfb"012345678"
でした。
Facebookガイドに記載されているように、アプリIDをInfo.plist
に正しくハードコーディングしてみましたが、FBSDKLoginButton
は正常に機能しました。 Safariが登場し、Facebookのログイン画面が表示されました。ただし、IDをハードコードする必要はありません。Info.plist
で正しく置き換えられていることを確認してください。
ターミナルでプロジェクトフォルダーに移動します
現在のバージョン4.39.1に更新する
私はフレームワークファイル/フォルダーをプロジェクトにコピーすることになっているreact-native-fbsdkの指示に従っていました。したがって、上記のCocoapodのアプローチは私にはうまくいきませんでした。
私がしたことは、プロジェクトから既存のフレームワークファイルを削除し(フレームワークアイテムを右クリック->削除->はいすべて削除)、それから以前のバージョンのフレームワークをダウンロードして再度追加します:
これを機能させるには、2つのことを行う必要がありました。
pod 'FBSDKCoreKit', '~> 4.38.0'
pod 'FBSDKLoginKit', '~> 4.38.0'
これはFacebook開発者ポータルで提案されていますが。これにより、以下のエラーが発生しました。
com.facebook.sdk:FBSDKErrorDeveloperMessageKey = URLの構築中に不明なエラーが発生しました。
お役に立てれば。