我正在开发一个使用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
,然后您可以取消链接。