处理不同的Firebase身份验证提供程序

时间:2019-10-12 19:48:42

标签: firebase flutter firebase-authentication

我想知道使用各种Firebase Auth提供程序的最佳做法是什么。 我有一个Flutter项目,该项目使用Firebase Auth Google和邮件提供商来注册用户。

问题在于,如果某些用户验证了其电话号码,他们将拥有更多权限。因此,我也必须实现Phone Auth提供程序,但是现在,当用户验证其电话号码时,它将自动使用新ID登录,因为无法将电话验证与登录过程分开。

起初,我认为删除新用户应该为我提供一个简单的解决方案,但是当您删除该用户时,它也会对其进行签名,因此它无法按我的方式工作。

我认为在创建新用户时切换到“原始”用户应该很容易,但是那时我仍然会有一个具有2个ID的用户,这样看来有点混乱。

那么,有人遇到同样的问题吗,他们的解决方案是什么? 如果没有,您能帮我找到处理这种情况的最佳方法吗?

编辑:如果有人想让用户在注册时选择使用电话提供商进行注册,这不是解决方案。

2 个答案:

答案 0 :(得分:1)

如果只有一个用户与多个提供程序一起登录,则可以期望您告诉Firebase身份验证链接帐户,以便它们共享相同的身份。 documentation for web对此进行了详细讨论。我确信API和程序对于flutter都是相似的。

答案 1 :(得分:0)

这是颤动的代码,以防万一有人需要它:

void _linkWithCredential() async {
    final AuthCredential credential = PhoneAuthProvider.getCredential(
      verificationId: _verificationId,
      smsCode: _smsController.text,
    );
     (await _auth.currentUser()).linkWithCredential(credential);
  }