2017-07-02 16 views
0

Firebaseを使用した電子メールとFacebookのログイン認証が正常に実装されました。私は今、電子メールユーザーが自分のアカウントをFacebookにリンクさせたいと考えています。FirebaseパスワードのユーザーとFacebookのユーザーとの接続

私は、このために次のコードを持っている:

let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString) 

if let user = Auth.auth().currentUser { 
    user.link(with: credential, completion: { user, error in 
     // 
    }) 
} 

リンク作品を、しかし、返されたユーザーにはのdisplayNameやphotoUrlを持っていません。ユーザーが完了ブロックに戻ったか、Auth.auth().currentUserを介してユーザーにアクセスしたかのいずれかです。

Facebookで直接認証する場合、ユーザーはdisplayNameとphotoUrlを持っています。アカウントをリンクするときになぜこれらのプロパティがnilであるのか不明です。何か案は?

答えて

0

あなたはまず電子メール/パスワードでユーザーをサインアップしてから、自分のアカウントにFacebookをリンクしていると仮定します。 Firebase AuthバックエンドはFacebookプロファイルデータをトップレベルdisplayNamephotoURLにコピーしません。 しかし、このソリューションは非常に簡単です。リンクした後、facebook currentUser.providerData[indexOfFacebook]からFacebookのdisplayNameとphotoURLをコピーし、currentUser.createProfileChangeRequest()を使用して、現在のユーザーのdisplayNamephotoURLを更新できます。

+0

ありがとう、非常に助かりました –

+0

ようこそ。 – bojeil

関連する問題