3


Firebase Simple Login で Facebook を使用しています。user.displayNameFirebaseSimpleLogin インスタンスで正常に実行した人の本名を取得しようとしています。でメールを取得しようとするとuser.email、 が返されますundefined。私は Google+ で同じことをしましたが、問題なく動作し、未定義は返されませんでした。これが私のコードです:

var chatRef = new Firebase('https://******.firebaseio.com');
//No, i didn't actually put this firebase name in my code =P
var auth = new FirebaseSimpleLogin(chatRef, function(error, user) {
  if (error) {
    // an error occurred while attempting login
    console.log(error);
    alert('An error occurred while trying to log you in.' + error);
  } else if (user) {
    // user authenticated with Firebase
    console.log('Name: ' + user.displayName + ', email: ' + user.email);
    //With google, 'Name: John Doe, email: johndoe@example.com' is returned
    //With facebook, 'Name: John Doe, email: undefined' is returned
  } else {
    // user is logged out
  }


});

function google() {
  auth.login('google', {
    rememberMe: true
  });
}

function facebook() {
  auth.login('facebook', {
    rememberMe: true,
    scope: 'email'
  });
}

だから、私の質問は、どうすれば Facebook Firebase Simple Login でユーザーのメールアドレスを取得できますか? よろしくお願いします。

4

1 に答える 1

5

開始する前に、ユーザー オブジェクトに既に存在するプロパティを確認する最善の方法は、既存の認証チェックにコンソール ログを追加することです。

使用:

else if (user){
  console.log(user);
}

現在設定されているように、ユーザー オブジェクトに存在するプロパティがわかります。追加の許可が必要になる場合があります - 以下を参照してください。

facebook dev docsによると、アクセス許可は、ログイン要求または API 呼び出しと共に渡される文字列です。権限の 2 つの例を次に示します。

  • email: 個人のプライマリ メール アドレスへのアクセス。
  • user_likes: 人が好きなもののリストへのアクセス。

たとえば、Web アプリにログイン ボタンを追加し、scope パラメーターを介して電子メールと user_likes を要求すると、初回ログイン時に次のダイアログが表示されます。

そしてfirebaseドキュメントごと

以下に、セッションが 30 日間保存される例を示します (「remember me」設定のため)。また、email と user_likes の拡張権限も要求します。

auth.login('facebook', {
  rememberMe: true,
  scope: 'email,user_likes'
});

そのため、auth.login パラメーターに追加のアクセス許可を追加していない限り、ユーザーのプライマリ メール アドレスにアクセスすることはできません。

于 2014-06-18T00:56:29.550 に答える