Мое приложение реагирует на ноды и позволяет пользователям входить анонимно, используя 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. Кто-нибудь знает, поддерживается ли этот тип ссылок? Кто-нибудь может указать, что я здесь делаю не так?