firebase response-native: преобразование анонимного пользователя в постоянного пользователя с помощью аутентификации по телефону - PullRequest
1 голос
/ 23 июня 2019

Мое приложение реагирует на ноды и позволяет пользователям входить анонимно, используя firebase. После этого я надеюсь разрешить пользователю создать учетную запись через firebase phone auth и преобразовать эту анонимную учетную запись в постоянную.

Я думаю, что это возможно на основе API и документации, предоставленной firebase

создание анонимного аккаунта: https://rnfirebase.io/docs/v5.x.x/auth/reference/auth#signInAnonymously

аутентификация телефона создание и получение учетных данных: https://rnfirebase.io/docs/v5.x.x/auth/reference/PhoneAuthProvider#credential

Связывание существующего пользователя с новыми учетными данными: https://rnfirebase.io/docs/v5.x.x/auth/reference/User#linkWithCredential

https://firebase.google.com/docs/auth/web/account-linking

Вот что я сделал

создание анонимного аккаунта:

const {user: {uid: userID}} = await firebase.auth().signInAnonymously();

// successfully created and save this user's id

заставить пользователей проходить аутентификацию и получить учетные данные для аутентификации телефона:

const credential = firebase.auth.PhoneAuthProvider.credential(verificationId, code);

на данный момент у меня будут действительные учетные данные и уже существующий анонимный пользователь, готовый к связыванию

Затем я предоставляю учетные данные для проверки подлинности телефона моему анонимному пользователю для связи

const authUser = await firebaseAuth.currentUser.linkWithCredential(credential);

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

Error: This credential is already associated with a different user account.

Код ошибки: ERROR_CREDENTIAL_ALREADY_IN_USE

в документации под ERROR_CREDENTIAL_ALREADY_IN_USE они упоминали:

эта ошибка может возникать, если вы обновляете анонимного пользователя до пользователя Google, связывая с ним учетные данные Google, а используемые учетные данные Google уже связаны с существующим пользователем Google Firebase. Поля error.email, error.phoneNumber и error.credential (AuthCredential) может предоставляться в зависимости от типа учетных данных. Вы можете исправить эту ошибку, выполнив вход с помощью error.credential напрямую через auth # signInWithCredential.

Но мне не удалось найти error.credential под объектом error, чтобы вернуться из-за ошибки.

Я видел много рабочих примеров связывания анонимного пользователя с другими провайдерами аутентификации, но никогда не видел связывания анонимного пользователя firebase с аутентификацией аутентификации телефона firebase. Кто-нибудь знает, поддерживается ли этот тип ссылок? Кто-нибудь может указать, что я здесь делаю не так?

1 Ответ

0 голосов
/ 26 июня 2019

Продолжение:

Итак, я действительно обнаружил, что мой код работает, и именно так вы реализуете анонимный пользователь firebase -> привязка учетной записи телефона с помощью firebase.

Причина, по которой это не сработало для меня, заключалась в том, что ..... для нашего приложения у нас был микросервис, создающий учетные записи в бэкэнде каждый раз, когда пользователь вводит код подтверждения. Оглядываясь назад, я должен был действительно дважды проверить нашу собственную кодовую базу, извлеченный урок.

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