firebase - 如何防止 Firebase 中同一用户的多个帐户?
问题描述
我们正在使用 Flutter 开发应用程序并探索 Firebase 进行身份验证,我们计划向最终用户提供以下身份验证机制。
- 通过 OTP 登录
- 社交登录(Facebook/谷歌)
但是有一个问题,在下面的场景中。
用户通过 OTP 登录(创建一个新帐户),假设 U1(用户 ID)和 M1(移动)
U1---->M1
现在在另一天,同一用户尝试通过 FaceBook 登录(我们不会通过社交登录获得手机),只有电子邮件将在那里,现在将为同一用户创建一个新帐户。
U2 -----> E1
我如何防止在第 2 步(U2)创建帐户,作为其同一用户?
尝试探索,在 OTP 验证后通过电话号码更新用户个人资料,以防社交登录,但看起来无法添加电话号码,以防该号码的帐户已经存在。
如果已经存在具有给定电话号码的帐户,则会引发 FirebaseAuthUserCollisionException
有人可以帮忙吗?有人使用 Firebase 身份验证遇到过类似的问题吗?
解决方案
您需要找到一种方法来识别这是同一用户,然后将他们的电话和 Facebook 帐户链接在一起。
将帐户识别为来自同一用户的惯用方法是通过他们的电子邮件地址。这意味着您必须要求 Phone auth 用户提供一个电子邮件地址,然后在帐户上设置该电子邮件地址。
推荐阅读
- c# - 在 LINQ 中将 IGrouping 转换为 IQueryable
- json - SQLAlchemy(psycopg2.ProgrammingError)无法适应类型'dict'
- python - Numpy.gradient:如何输入一组观察值和相应的输出?
- angular - 错误类型错误:this.validator 不是函数 FormArray
- anaconda - 在 Linux 上从源代码构建 PyTorch 时出错
- java - 为什么常量池(在 Java 类文件中)从 1(而不是 0)开始索引?保留的 constant_pool[0] 条目是做什么用的?
- php - 如何显示来自不同表的类别名称而不是类别 ID
- python - 对数千个坐标进行反向地理编码以仅获取国家/地区
- java - 单击时正确生成整数
- php - PHP:编辑 JSON 字符串,传递变量值