如何更新FirebaseUser';firebase_auth中的s电话号码?

如何更新FirebaseUser';firebase_auth中的s电话号码?,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,在我的Flatter应用程序中,我使用Firebase的电话号码身份验证作为身份验证的主要形式。验证后,我在我的users集合中创建了一个用户,其中包含以下详细信息: { phoneNumber: FirebaseAuth.instance.currentUser().phoneNumber, displayName: 'Comes from user textbox', ... } 但是假设有一天,一个用户想要更改他们的电话号码。我该怎么做?因为我不能在文档中简单地更

在我的Flatter应用程序中,我使用Firebase的电话号码身份验证作为身份验证的主要形式。验证后,我在我的
users
集合中创建了一个用户,其中包含以下详细信息:

{
    phoneNumber: FirebaseAuth.instance.currentUser().phoneNumber,
    displayName: 'Comes from user textbox',
    ...
}
但是假设有一天,一个用户想要更改他们的电话号码。我该怎么做?因为我不能在文档中简单地更改用户的电话号码,因为电话号码需要经过身份验证。身份验证之后,用户将获得一个新的authUID。哪个应该是新用户


有人能解释一下用户想要保留其个人资料详细信息但更改其号码的逻辑吗。

为了实现这一点,您可以使用。这允许您更新用户的电话号码

您使用它的方式与您首先通过电话号码进行身份验证的方式相同(使用
signInWithCredential
),即您使用
verificationCompleted
或您的用户输入收到的SMS代码时获取的凭据进行检索和传递。我将仅勾勒出这将是什么样子,因为我假设您知道如何执行此任务:

FirebaseAuth.instance.verifyPhoneNumber(
电话号码:电话号码,
超时:常量持续时间(分钟数:2),
验证完成:(凭证)异步{
wait(wait FirebaseAuth.instance.currentUser()).UpdatePhoneNumber凭证(凭证);
//出现这种情况,或者用户需要手动输入SMS代码
},
验证失败:null,
codeSent:(验证ID,[forceResendingToken])异步{
字符串smsCode;
//以某种方式从用户处获取SMS代码(可能使用文本字段)
最终认证证书=
getCredential(verificationId:verificationId,smsCode:smsCode);
wait(wait FirebaseAuth.instance.currentUser()).UpdatePhoneNumber凭证(凭证);
},
codeAutoRetrievalTimeout:空);
调用
updatePhoneNumberCredential
时,您可能还需要更新数据库文档。或者,您也可以通过这种方式侦听和更新文档。

异步函数保存(电话:string,e){
e、 预防默认值();
const{currentUser:fuser}=firebase.auth();
if(fuser&&fuser.phoneNumber!==电话){
试一试{
const-verifier=new-firebase.auth.repactchaverifier('repactcha-container'{
回调:(响应)=>console.log('callback',response),
大小:'不可见',
});
const phoneProvider=new firebase.auth.PhoneAuthProvider();
const id=wait phoneProvider.verifyPhoneNumber(电话,验证器);
const code=window.prompt('bite zugeschickten code eingelen');
const cred=firebase.auth.PhoneAuthProvider.credential(id、代码);
等待fuser.updatePhoneNumber(cred);
console.log('电话号码已更改',id,cred,fuser);
设置成功(true);
}捕获(e){
控制台错误(e);
}
}
}

非常感谢!:)你能检查一下这个问题吗