无法从Firebase检索Google提供商的用户电子邮件地址

时间:2016-10-25 19:44:28

标签: android firebase firebase-authentication googlesigninapi

我按照Firebase文档检索了文档管理用户部分中用户的特定于提供商的个人资料信息。

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
for (UserInfo profile : user.getProviderData()) {
    // Id of the provider (ex: google.com)
    String providerId = profile.getProviderId();

    // UID specific to the provider
    String uid = profile.getUid();

    // Name, email address, and profile photo Url
    String name = profile.getDisplayName();
    String email = profile.getEmail();
    Uri photoUrl = profile.getPhotoUrl();
};

我能够获取提供者ID,uid,DisplayName,但我无法收到电子邮件。

以下GoogleSignInOptions代码和GoogleApiClient可访问Google登录API代码

    // Configure sign-in to request the user's ID, email address, and basic
    // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.gmaptest_web_client_id))
            .requestEmail()
            .requestScopes(new Scope(Scopes.EMAIL))
            .build();

    // Build a GoogleApiClient with access to the Google Sign-In API and the
    // options specified by gso.
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .addScope(new Scope(Scopes.EMAIL))
            .build();

1 个答案:

答案 0 :(得分:1)

转到项目控制台 - >身份验证 - >登录方法 - >每个电子邮件地址一个帐户(防止使用相同的电子邮件地址创建多个帐户)。 删除已创建的帐户,然后重新登录,现在您可以获取电子邮件地址。

//我只是想知道你为什么使用'user.getProviderData()',user.getEmail()就足够了。