2017-07-18 10 views
0

ユーザがFacebookを使用してアプリケーションにログインすると、そのユーザのフルネームをキャプチャして表示できます。しかし、電子メールも電話番号も渡っていません。私は "電子メールアドレスごとに1つのアカウント"と "電子メールごとに複数のアカウント"の両方を試しました。私は電子メールアドレスがFirebaseに登録されていないアカウントでテストしました。電子メール/電話がキャプチャされていないなど、何が欠けていますか?これはすべてGoogleアカウントで動作します。下記のコメントに基づいて更新するにはFirebaseがFacebookからの電子メール/電話をキャプチャしていない

func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) 
{ 
    if let error = error 
    { 
     print(error.localizedDescription) 
    } 
    else 
    { 
     if FBSDKAccessToken.current() != nil 
     { 
      let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString) 
      Auth.auth().signIn(with: credential) { (user, error) in 
       if let error = error 
       { 
        print (error.localizedDescription) 
       } 
      } 
     } 
    } 
} 

let name = Auth.auth().currentUser?.displayName // works! 
let email = Auth.auth().currentUser?.email   // nil- why? 
let phone = Auth.auth().currentUser?.phoneNumber // nil -why? 

のFacebook/wの標準Firebaseでログインプロセスは、次のようになります。また、userInfoの内容を調べるときには、以下のようにメールと電話が無制限になります。私は電話がちょうどその方法かもしれないことを理解しますが、電子メールは動作するはずでした。

let userInfo = Auth.auth().currentUser?.providerData 
+0

Facebookのユーザーがメールまたは電話番号へのアクセスを許可していない可能性があります –

+0

@ArpitJain私自身のアカウントを使用しており、アクセスを許可しています。 – C6Silver

答えて

0

トップレベルのphoneNumber currentUser.phoneNumberは、Firebaseで検証された電話番号のみです。 Facebookの電話番号をお持ちの場合は、currentUser.updatePhoneNumber APIを使用して番号を確認できます(全体の流れを調べる必要があります)。そうでない場合は、今後の管理用node.js APIが既存のユーザーに対して管理者権限を持つ電話番号を設定するまで待つことができます。https://github.com/firebase/firebase-admin-node/commit/68563c4b2c8128fbc45fc65bad3f6730d320b539

メールについては、「メールごとの複数のアカウント」の場合は自分で設定する必要がありますcurrentUser.updateEmailを介して。 Facebookプロバイダのデータを含むcurrentUser.providerDataからFacebookのメールを受け取ることができます。

+0

この回答に感謝します。電子メールアドレスに関しては、それはproviderData内ではnilです。他のフィールドはphotoURLのようなものではありませんが、Facebookではメールは無制限です(これはGoogleでも問題ありません)。私はまた、電子メールごとに複数のアカウントを許可していません。 – C6Silver

+0

別のFacebookアカウントで試してみることはできますか?このアカウントはこれらのフィールドへのアクセスを許可しない可能性があります。私はあなたがそうでないと主張することを知っていますが、この問題がその特定のアカウントと隔離されているかどうかを確認するために別のアカウントをテストするだけでは問題ありません。 – bojeil

+0

私は2つの異なるアカウントでそれをテストしました。同じ問題。 – C6Silver

関連する問題