Firebase как связать учетную запись, созданную с помощью phoneNumber

Dec 07 2020

✅ Я могу разрешить пользователю обновлять свой профиль, используя номер мобильного телефона, verifyPhoneNumberи обновлятьcurrentUser.updatePhoneNumber

❌ Моя проблема возникает, когда я разрешаю вход по телефону, и НОВЫЙ ПОЛЬЗОВАТЕЛЬ пытается войти в систему с помощью номера телефона, учетная запись создается автоматически.

Если затем мне нужно связать номер с учетной записью электронной почты , вышеуказанный метод вернет credential-already-in-useошибку.

Firebase рекомендует в своей документации следующий метод .

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

firebase.auth().signInWithCredential(credential);

Итак, я сделал это вместе, linkWithCredentialно signInWithCredential возвращает результат сresult.credential = null

// Sign in user with the account you want to link to
auth.signInWithCredential(credential).then(function(result) {
  console.log("Sign In Success", result);
  var currentUser = result.user;

  return prevUser.linkWithCredential(result.credential) //this line doesn't work.
    .then(function(linkResult) {

      return auth.signInWithCredential(linkResult.credential);
    })
}).catch(function(error) {

  console.log("Sign In Error", error);

});

Поскольку result.credential = null, я не могу продолжить LinkWithCredential.

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

❓Могу ли я узнать, как вы, ребята, объединили учетную запись phoneNumber с другой учетной записью (Facebook / Google / электронная почта)?

Ответы

kunquan Dec 31 2020 at 13:05

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

IcyTv Dec 30 2020 at 04:29

Может быть что-то вроде

const confirmationResult = await firebase.auth().currentUser.linkWithPhoneNumber(phoneNumber, recaptcha);
//Prompt your user for the code they recieved via sms here
confirmationResult.confirm(code);

где у вас есть пользователь, который вошел в систему через имя пользователя / пароль, facebook google и т. д. будет работать?

Поскольку вы не получаете идентификатор подтверждения от Phone Linking, а получаете ConfirmationResult