繁体   English   中英

Firebase电话验证以及帐户链接

[英]Firebase Phone Auth along with account linking

我的电话身份验证凭证持久性/有效期有问题。

我的情况是这样的:我有一个来宾用户,我想链接一个电话号码。 如果未使用该电话号码注册帐户,则该流程可完美运行。 但是,如果确实存在,那么我必须:

  1. 登录并取消链接帐户。
  2. 关联帐户。
  3. 登入。

这需要3个不同的凭据。 但是一旦使用一次,凭据将用于电话身份验证-根据我对错误消息的理解:

SMS代码已过期。 请重新发送验证码,然后重试。

我不想连续3次询问用户手机上的验证码,以便可以生成新的凭据。 有什么办法可以使凭据持久化还是可以解决此问题?

如果需要,我可以共享代码,但我认为这不会有任何帮助。

这是您应该执行的操作:首先初始化电话验证凭据。 尝试始终将该凭证链接到访客帐户。 如果失败并显示错误“用户中已有凭据”,则错误userinfo将包含一个新凭据。 然后,可以使用该凭据登录现有的电话号码帐户。 这是目标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.
}];

然后,您可以以编程方式将来宾用户的数据复制到现有用户并删除来宾用户。

只需发送一条短信即可有效完成所有这些操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM