首页 > 解决方案 > 如何防止 Firebase 中同一用户的多个帐户?

问题描述

我们正在使用 Flutter 开发应用程序并探索 Firebase 进行身份验证,我们计划向最终用户提供以下身份验证机制。

  1. 通过 OTP 登录
  2. 社交登录(Facebook/谷歌)

但是有一个问题,在下面的场景中。

  1. 用户通过 OTP 登录(创建一个新帐户),假设 U1(用户 ID)和 M1(移动)

    U1---->M1

  2. 现在在另一天,同一用户尝试通过 FaceBook 登录(我们不会通过社交登录获得手机),只有电子邮件将在那里,现在将为同一用户创建一个新帐户。

    U2 -----> E1

我如何防止在第 2 步(U2)创建帐户,作为其同一用户?

尝试探索,在 OTP 验证后通过电话号码更新用户个人资料,以防社交登录,但看起来无法添加电话号码,以防该号码的帐户已经存在。

如果已经存在具有给定电话号码的帐户,则会引发 FirebaseAuthUserCollisionException

https://firebase.google.com/docs/reference/android/com/google/firebase/auth/FirebaseUser#updatePhoneNumber(com.google.firebase.auth.PhoneAuthCredential)

有人可以帮忙吗?有人使用 Firebase 身份验证遇到过类似的问题吗?

标签: firebaseflutterfirebase-authentication

解决方案


您需要找到一种方法来识别这是同一用户,然后将他们的电话和 Facebook 帐户链接在一起

将帐户识别为来自同一用户的惯用方法是通过他们的电子邮件地址。这意味着您必须要求 Phone auth 用户提供一个电子邮件地址,然后在帐户上设置该电子邮件地址


推荐阅读