0

Я следил за документацией Firebase, чтобы получить информацию о профиле пользователя для конкретного пользователя в разделе управления документацией.Не удалось получить адрес электронной почты пользователя поставщика google от 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(); 
}; 

Я смог получить идентификатор провайдера, 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

Перейти к консоли проекта -> Аутентификация -> Sign-In Method -> Один счет на адрес электронной почты (Prevent создание нескольких учетных записей с тем же адресом электронной почты). Удалите созданную учетную запись и войдите снова, теперь вы можете получить адрес электронной почты.

// Я просто задаюсь вопросом, почему вы используете 'user.getProviderData()', user.getEmail() достаточно.

+0

Спасибо, что это сработало как шарм ... –

+0

В соответствии с документацией Firebase, чтобы получить информацию о профиле пользователя для конкретного пользователя, я использовал метод getProviderData, как работает user.getEmail(). –

Смежные вопросы