FirebaseAuth:如何更改已链接到提供商的电话号码



我正在开发一个使用Firebase身份验证的Flutter应用程序。我在注册过程中使用了多个提供商和电话验证。

我想给用户一个选项来更改链接到他们电子邮件ID的电话号码。但为此,我需要再次验证该号码。我在这方面遇到了麻烦。

我正在使用unlinkFromProvider函数,然后使用linkWithCredential再次链接它。这是它的代码。

FirebaseUser _firebaseUser = await _auth.currentUser();
var credential = PhoneAuthProvider.getCredential(
smsCode: smsCode,
verificationId: verificationId,
);
await _firebaseUser.unlinkFromProvider(_firebaseUser.providerId);
result = await _firebaseUser.linkWithCredential(credential);

但在这样做的时候,我得到了这个错误

ERROR_NO_SUCH_PROVIDER:用户未链接到给定提供程序的帐户。

我认为这意味着提供者ID可能是错误的。

如何获取正确的提供商ID?我做这件事完全错了吗?

如果是,正确的方法是什么?

感谢您抽出时间!

您不应该取消链接提供商以重新验证用户的电话号码。相反,您应该使用重新验证凭据重新验证用户。

之后,您可以拨打updatePhoneNumber更新号码。

您需要在providerData列表中迭代以获得正确的providerId:

FirebaseUser user = await FirebaseAuth.instance.currentUser();
user.providerData.forEach((element) {
element.providerId;
});

_firebaseUser.providerId很可能返回firebase,当您在providerData内部迭代时,您将获得provideridphone,然后您可以取消链接。

最新更新