Firebase FirebaseAuth.getInstance (). GetCurrentUser (). GetDisplayName () возвращает ноль с определенным адресом Gmail. - PullRequest
1 голос
/ 10 февраля 2020

Из заголовка вы могли бы подумать, что есть опубликованное решение моей проблемы, но на самом деле я считаю, что я прочитал все, что имеет отношение к моему вопросу, но ничего не совпало. Вот что у меня есть:

Прежде всего, эта проблема никогда не возникала в моем приложении до сегодняшнего дня, и при этом мой вход не менялся ни при каких условиях: тот же код входа в Google, та же учетная запись. Все то же самое в течение последних трех месяцев, пока я тестирую. И, насколько я могу судить, проблема возникает только с одной учетной записью. Когда пользователь начинает процесс входа, ему предоставляется выбор учетных записей для входа в систему; в этом случае я выбрал первого пользователя:

enter image description here

Далее Google аутентифицирует пользователя и мы попадаем сюда в коде:

enter image description here

Итак, вопрос в том, почему Firebase внезапно прекратил предоставлять отображаемое имя (и URL фотографии)? Из первого скриншота видно, что у пользователя есть указанное имя и фотография. Кроме того, FirebaseAuth.getInstance (). GetCurrentUser (). IsAnonymous () имеет значение false, как и ожидалось. Будем очень благодарны за любые идеи о том, почему это внезапно сломалось!

1 Ответ

0 голосов
/ 26 февраля 2020

Я решил эту проблему, просто обновив URL своего имени и фотографии с помощью UserProfileChangeRequest () и URL-адреса имени и фотографии моей учетной записи Google, как было предложено здесь :

    private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
    sendFirebaseEvent(FIREBASE_GOOGLE_AUTH_EVENT, FIREBASE_GOOGLE_AUTH_KEY, acct.getId());
    // [START_EXCLUDE silent]
    showProgressDialog();
    googleAccount = acct;
    // [END_EXCLUDE]
    final 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()) {
                        // Sign in success, update UI with the signed-in user's information
                        sendFirebaseEvent(FIREBASE_GOOGLE_AUTH_EVENT, FIREBASE_GOOGLE_AUTH_RESULT_KEY, "Success");
                        launchNextActivity();
                    } else {
                        // If sign in fails, display a message to the user.
                        sendFirebaseEvent(FIREBASE_GOOGLE_AUTH_EVENT, FIREBASE_GOOGLE_AUTH_RESULT_KEY, task.getException().getMessage());
                        Snackbar.make(findViewById(R.id.main_layout), "Authentication Failed.", Snackbar.LENGTH_SHORT).show();
                        updateUI(null);
                    }

                    // [START_EXCLUDE]
                    hideProgressDialog();
                    // [END_EXCLUDE]
                }
            });
}
private void launchNextActivity() {
    mFirebaseAuth = FirebaseAuth.getInstance();
    FirebaseUser mUser = mFirebaseAuth.getCurrentUser();
    if (mUser.getDisplayName() == null || mUser.getDisplayName().length() == 0) {
        UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
                .setDisplayName(googleAccount.getDisplayName())
                .setPhotoUri(googleAccount.getPhotoUrl())
                .build();
        mUser.updateProfile(profileUpdates);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...