Firebase Phone Auth以及帐户链接

时间:2018-01-04 13:21:28

标签: ios swift firebase firebase-authentication

我遇到手机身份验证凭据持久性/到期问题。

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

  1. 登录并取消关联帐户。
  2. 链接帐户。
  3. 登录。
  4. 这需要3种不同的凭据。但是,凭证在使用一次后就会过期 - 根据我对错误消息的理解:

      

    短信代码已过期。请重新发送验证码以尝试   试。

    我不想连续3次询问用户手机上的验证码,因此可以生成新的凭据。任何方式使凭据坚持或解决这个问题?

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

1 个答案:

答案 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.
}];

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

所有这些都可以通过发送一条短信来有效地完成。