gpt4 book ai didi

firebase - 如何在 firebase_auth 中更新 Firebase 用户的电话号码?

转载 作者:IT王子 更新时间:2023-10-29 06:56:22 34 4
gpt4 key购买 nike

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

{
phoneNumber: FirebaseAuth.instance.currentUser().phoneNumber,
displayName: 'Comes from user textbox',
...
}

但是假设有一天用户想要更改他们的电话号码。我该怎么做呢?因为我不能简单地更改文档中用户的电话号码,因为电话号码需要进行身份验证。并且在认证之后,用户得到一个新的authUID。哪个应该是新用户?

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

最佳答案

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

您将以与首先使用电话号码进行身份验证(使用 signInWithCredential)相同的方式使用它,即您使用 FirebaseAuth.verifyPhoneNumber 检索凭证并传递您从 verificationCompleted 或您的用户输入他们收到的 SMS 代码时获得的凭据。我只会勾勒出它的样子,因为我假设您知道如何执行此任务:

FirebaseAuth.instance.verifyPhoneNumber(
phoneNumber: phoneNumber,
timeout: const Duration(minutes: 2),
verificationCompleted: (credential) async {
await (await FirebaseAuth.instance.currentUser()).updatePhoneNumberCredential(credential);
// either this occurs or the user needs to manually enter the SMS code
},
verificationFailed: null,
codeSent: (verificationId, [forceResendingToken]) async {
String smsCode;
// get the SMS code from the user somehow (probably using a text field)
final AuthCredential credential =
PhoneAuthProvider.getCredential(verificationId: verificationId, smsCode: smsCode);
await (await FirebaseAuth.instance.currentUser()).updatePhoneNumberCredential(credential);
},
codeAutoRetrievalTimeout: null);

调用 updatePhoneNumberCredential 时,您可能还想更新数据库文档。或者,您可以收听 onAuthStateChanged并以此方式更新您的文档。

关于firebase - 如何在 firebase_auth 中更新 Firebase 用户的电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56841486/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com