android - 无法通过 Firebase 获取用户的 Gmail 电子邮件地址

标签 android firebase firebase-authentication

我正在开发一个使用 Firebase` 作为 BaaS 的应用。

我已经集成了 Google 登录,我想获取用户的姓名、电子邮件地址和个人资料照片。

我已成功获取姓名和个人资料照片,但无法获取电子邮件地址。

这是 Google API 客户端设置:

/* Setup the Google API object to allow Google+ logins */
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(Plus.API)
                .addScope(Plus.SCOPE_PLUS_LOGIN)
                .build();

这是我为获取用户数据所做的工作:

public void fetchDataFromGoogle() {

        if (authData != null) {
            if (authData.getProvider().equals("google")) {

                googleName = (String) authData.getProviderData().get("displayName");
                googleEmail = (String) authData.getProviderData().get("email");
                googleImage = (String) authData.getProviderData().get("profileImageURL");

            }
        } else {
            Toast.makeText(getBaseContext(), "error", Toast.LENGTH_LONG).show();
        }
    }

此代码已成功获取姓名和个人资料照片,但它为电子邮件地址返回 null

请让我知道这里出了什么问题。

最佳答案

不确定这是否是您的情况,但是您可以获取其他字段但 getEmail 返回 null 的一种情况是在 Firebase 控制台 > 身份验证 > 登录方法中您允许“使用相同的电子邮件地址创建多个帐户"

有一个 closed bug report已向谷歌提交:

When you go to the Auth > Sign-In Methods page of your project in the Firebase console. do you have One account per email address on or off? If you allow multiple accounts per email address, you will get null for FirebaseUser.getEmail()

enter image description here

您必须使用选项:“防止使用相同的电子邮件地址创建多个帐户”,否则 FirebaseUser.getEmail() 将返回 null

Ps:只有关闭该选项后首次登录的用户才能成功使用此方法

关于android - 无法通过 Firebase 获取用户的 Gmail 电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36353638/

相关文章:

ios - 使用 Codable 和 CodableFirebase 快速解析 Firebase 值时获取 nil

java - 为什么 TwitterLoginButton 在 Android 上不会膨胀?

android - 没有硬编码 IP 地址的 KSOAP2 连接

Android:可以将参数从 CursorAdapter 传递到服务

java - firebase 将数据作为数组获取

ios - 同时使用 Fabric 和 Firebase Crashlytics

firebase - 为什么我的应用程序在 firebase 抛出异常时停止?

Android + Firebase 身份验证 + REST API : How to properly work with token?

java - 如何在使用数据绑定(bind)的 onclick 操作后更改 Activity

Android Webview 视频或 Youtube 抛出错误