Javascript 如何在firebase.auth(js,ts)中更新用户电话号码

Javascript 如何在firebase.auth(js,ts)中更新用户电话号码,javascript,typescript,firebase,authentication,firebase-authentication,Javascript,Typescript,Firebase,Authentication,Firebase Authentication,如何更新firebase.auth中用于身份验证的用户电话号码 Firebase作为方法提供: updatePhoneNumber(phoneCredential) 但是我们需要给电话凭证。 此凭据接受以下对象: interface AuthCredential { providerId: string; signInMethod: string; } 我尝试发送此电话凭证中必须包含的内容 providerId: 'phone'; signInMethod: 'pho

如何更新firebase.auth中用于身份验证的用户电话号码

Firebase作为方法提供:

updatePhoneNumber(phoneCredential)
但是我们需要给电话凭证。 此凭据接受以下对象:

  interface AuthCredential {
    providerId: string;
    signInMethod: string;
  }
我尝试发送此电话凭证中必须包含的内容

providerId: 'phone';
signInMethod: 'phone';

这不是工作;(

编辑的:我编辑了我以前的答案,因为我现在认为它远远不正确。在进一步研究之后,我相信您需要使用内置更新用户电话号码,如下所示:

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

user.updatePhoneNumber(credential);
原始(错误):根据,您需要使用方法传递对象,该方法将返回providerId、signInMethod(在您的代码中为phone)和smsCode(如所述发送到用户手机的sms验证码)。请尝试这样做:

updatePhoneNumber({
  getProvider: () => { return providerStringCode; },
  getSignInMethod: () => { return signInMethodStringCode; },
  getSmsCode: () => { return smsStringCode; },
});

您需要从firebase.auth.PhoneAuthProvider.credential获取凭据

    // Send verification code to user's phone
    firebase.auth.PhoneAuthProvider.verifyPhoneNumber(phoneNumber, recaptchVerifier).then(function(verificationId) {
      // verification code from user
      var cred = firebase.auth.PhoneAuthProvider.credential(verificationId, verificationCode);
    });

我也有同样的问题, 在我的html页面(使用离子4模式),我有两个按钮发送OTP和验证。 这就是我的解决方案

编辑电话
电话:
电话号码。
短信OTP
{{timeLeft}}
检察官办公室:
菲利卡西

使用当前用户/登录帐户更新PhoneNumber的解决方案。这样对任何人都有帮助

问题: 假设您有一个当前登录帐户,其中包含任意数量的单个/合并帐户,并且他们希望更新其号码。他们将如何进行更新

解决方案: 下面是Auth for Web/JS方法,对于您的目标平台将存在等效的方法

function updateProfilePhoneNumber() {
    //country code plus your phone number excluding leading 0 if exists.
    var phoneNumber = "+447xxxxxxxxx"; //you could provide a prompt/modal or other field in your UX to replace this phone number.

    // let phoneNumber = "+441234567890"; //testing number, ideally you should set this in your firebase auth settings
    // var verificationCode = "123456";

    // Turn off phone auth app verification.
    // firebase.auth().settings.appVerificationDisabledForTesting = true;

    // This will render a fake reCAPTCHA as appVerificationDisabledForTesting is true.
    // This will resolve after rendering without app verification.
    var appVerifier = new firebase.auth.RecaptchaVerifier(
        "recaptcha-container",
        {
            size: "invisible"
        }
    );

    var provider = new firebase.auth.PhoneAuthProvider();
    provider.verifyPhoneNumber(phoneNumber, appVerifier)
        .then(function (verificationId) {
            var verificationCode = window.prompt('Please enter the verification ' +
                'code that was sent to your mobile device.');
            phoneCredential = firebase.auth.PhoneAuthProvider.credential(verificationId, verificationCode);
            user.currentUser.updatePhoneNumber(phoneCredential);
        })
        .then((result) => {
            // Phone credential now linked to current user.
            // User now can sign in with new phone upon logging out.
            console.log(result);
        })
        .catch((error) => {
            // Error occurred.
            console.log(error);
        });
}

很高兴在此更正。

如何向现有登录用户添加电话号码(
verifyPhoneNumber
):

使用电话号码注册/创建新用户(
signInWithPhoneNumber
):


请您澄清一下您遇到的错误是什么?
const appVerifier = new firebase.auth.RecaptchaVerifier('save-user-button', { size: 'invisible' }) // An element with id="save-user-button" must exist
const authProvider = new firebase.auth.PhoneAuthProvider()
const verificationId = await authProvider.verifyPhoneNumber(phoneNumber, appVerifier)
const verificationCode = window.prompt('Please enter the verification code that was sent to your phone.')
const phoneCredential = firebase.auth.PhoneAuthProvider.credential(verificationId, verificationCode)
myFirebaseUser.updatePhoneNumber(phoneCredential)
const appVerifier = new firebase.auth.RecaptchaVerifier('create-new-user-button', { size: 'invisible' }) // An element with id="create-new-user-button" must exist
const confirmationResult = await firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)
const verificationCode = window.prompt('Please enter the verification code that was sent to your phone.')
const { user } = await confirmationResult.confirm(verificationCode)