首页 > 解决方案 > 为什么登录 Facebook 帐户时用户电子邮件为空,但登录 Google 帐户时用户电子邮件不为空?

问题描述

我使用 Firebase 允许用户使用他们的 Facebook 帐户或 Google 帐户登录。我已允许在同一个电子邮件地址下创建多个帐户。

这是在使用 Facebook 帐户成功登录后将用户发送到下一个屏幕的方法:

private void handleFacebookAccessToken(AccessToken token) {
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Intent intent = new Intent(MainActivity.this, Profile.class);
                        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                        startActivity(intent);
                        overridePendingTransition(0, 0);
                    }
                }
            });
}

如果用户使用他们的 Google 帐户登录,这是将用户发送到下一个屏幕的方法:

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Intent intent = new Intent(MainActivity.this, Profile.class);
                        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                        startActivity(intent);
                        overridePendingTransition(0, 0);
                    }
                }
            });
}

所以一切正常,除了我使用 时user.getEmail(),它在使用我的 Facebook 帐户登录时返回 null,但在使用我的 Google 帐户登录时返回正确的电子邮件地址。我在同一个电子邮件地址下登录这两个帐户。我该如何解决这个问题?

标签: javaandroidfirebasefirebase-authentication

解决方案


可能有2个原因

  1. 用户有未确认的电子邮件。

  2. 用户可能已使用手机号码注册。

不保证您会收到来自 Facebook 的电子邮件


推荐阅读