java - 为什么登录 Facebook 帐户时用户电子邮件为空,但登录 Google 帐户时不为空?

标签 java android firebase firebase-authentication

我使用 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 帐户登录时返回正确的电子邮件地址。我正在使用同一个电子邮件地址登录这两个帐户。我该如何解决这个问题?

最佳答案

可能有两个原因

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

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

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

关于java - 为什么登录 Facebook 帐户时用户电子邮件为空,但登录 Google 帐户时不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53953522/

相关文章:

java - Android在新线程中每秒写入日志

java - 在 Spring 上下文文件中使用什么 xmlns 和 schemaLocation?

android - 为什么 Android XmlPullParser 在我的旧设备上真的很慢?

android - Python、Kivy、Buildozer : error using python-firebase/requests

javascript - 我如何解决此语法错误 : Unexpected token (1:13)?

firebase - `gsutil cp` 命令抛出 "OSError: The filename, directory name, or volume label syntax is incorrect"

java - 如何正确解析 Firebase DataSnapshot 值

java - 如何在服务器中运行作为 jar 添加到 EAR 项目中的 java 项目

java - 在 Windows 服务器上的 IIS 上部署 Java/JSP/Struts 2 Web 应用程序

android - 在我自己的项目中使用 ActionBarSherlock 作为库