Как добавить адрес электронной почты для пользователя, который прошел проверку подлинности с использованием телефонной аутентификации - PullRequest
2 голосов
/ 19 января 2020

Я хотел бы добавить адрес электронной почты для пользователя, который выбрал аутентификацию по телефону, и добавить номер телефона для пользователя, который аутентифицирован с помощью электронной почты или входа в Google.

Ответы [ 4 ]

2 голосов
/ 19 января 2020

Вы можете объединить аутентификации, используя linkWithCredential ()

auth.getCurrentUser (). LinkWithCredential (credential)

проверить эту ссылку https://firebase.google.com/docs/auth/android/account-linking

2 голосов
/ 19 января 2020

В соответствии с официальным кодом c, вы можете установить адрес электронной почты пользователя с помощью метода updateEmail, например:

In Java:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

user.updateEmail("user@example.com")
    .addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if (task.isSuccessful()) {
                Log.d(TAG, "User email address updated.");
            }
        }
    });

In Kotlin:

val user = FirebaseAuth.getInstance().currentUser

user?.updateEmail("user@example.com")
    ?.addOnCompleteListener { task ->
        if (task.isSuccessful) {
            Log.d(TAG, "User email address updated.")
        }
    }
1 голос
/ 19 января 2020

Обновление или добавление электронного письма - важная и конфиденциальная информация, другие ответы, хотя и выделяют важные шаги, они забывают упомянуть, что пользователь должен недавно пройти проверку подлинности, чтобы его решения работали. Если пользователь недавно не прошел аутентификацию, Firebase выдает исключение - FirebaseAuthRecentLoginRequiredException (см. документация ).

Давайте рассмотрим официальные примеры документов.

Обновление или добавление адреса электронной почты ( документы )

val user = FirebaseAuth.getInstance().currentUser

user?.updateEmail("user@example.com")?.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        Log.d(TAG, "User email address updated.")
    }
}

Что делать, если пользователь недавно не прошел аутентификацию?

Повторная проверка подлинности пользователя ( документы )

Снова взяты прямо из документов:


// Get auth credentials from the user for re-authentication. The example below shows
// email and password credentials but there are multiple possible providers,
// such as GoogleAuthProvider or FacebookAuthProvider.
val credential = EmailAuthProvider
        .getCredential("user@example.com", "password1234")

// Prompt the user to re-provide their sign-in credentials
user?.reauthenticate(credential)
        ?.addOnCompleteListener { Log.d(TAG, "User re-authenticated.") }

В В вашем случае поставщик учетных данных будет PhoneAuthProvider.

0 голосов
/ 19 января 2020

Вы должны добавить логическую переменную в базу данных, в которую пользователь вставил электронную почту или нет. изначально значение этой переменной будет ложным. если пользователь вошел в систему по номеру телефона, установите для этой переменной значение false, иначе измените его на true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...