我遇到手机身份验证凭据持久性/到期问题。
我的情况是这样的: 我有一位访客用户,我想用电话号码链接。如果帐户未在该电话号码中注册,则流程将完美运行。但如果确实存在,那么我必须:
这需要3种不同的凭据。但是,凭证在使用一次后就会过期 - 根据我对错误消息的理解:
短信代码已过期。请重新发送验证码以尝试 试。
我不想连续3次询问用户手机上的验证码,因此可以生成新的凭据。任何方式使凭据坚持或解决这个问题?
如果需要,我可以分享代码,但我认为这不会有任何帮助。
答案 0 :(得分:2)
这是你应该做的: 首先初始化手机身份验证凭据。尝试始终将该凭据链接到来宾帐户。如果失败并显示错误“凭证已在用户中”,则错误userinfo将包含新凭证。然后,可以使用此凭据登录现有的电话号码帐户。这是objective-c中的一个例子。
[[FIRAuth auth].currentUser linkWithCredential:credential
completion:^(FIRUser *_Nullable user,
NSError *_Nullable error) {
if (user) {
// Successfully linked credential.
return;
}
if (error.code == FIRAuthErrorCodePhoneAlreadyInUse) {
// Save guest user data.
// Sign in the user instead if applicable.
FIRAuthCredential *credential = error.userInfo[FIRAuthUpdatedCredentialKey];
[[FIRAuth auth] signInWithCredential:credential
completion:^(FIRUser *_Nullable user,
NSError *_Nullable error) {
// copy guest user data to existing phone number user.
}];
return;
}
// Other errors.
}];
然后,您可以以编程方式将来宾用户的数据复制到现有用户,并删除来宾用户。
所有这些都可以通过发送一条短信来有效地完成。