firebase - 如果在其他设备上验证,Firebase 会将匿名 UID 链接到电子邮件验证
问题描述
是否有人设法将授权电子邮件与之前在另一台设备上创建的匿名 UID 相关联?
这是工作流程:
用户第一次访问该站点,创建了匿名 UID,他们输入电子邮件作为注册的一部分,该电子邮件被添加到他们在数据库中的详细信息中
将向他们发送一封电子邮件以验证电子邮件。
但是,无论出于何种原因,用户都会错过它。
相反,他们再次使用不同的设备,并尝试通过输入他们的电子邮件并接收链接来使用无密码登录方式登录
他们得到链接并点击它。电子邮件经过验证,但被分配到第二次访问时创建的新 UID。
问题是如何将电子邮件链接到新设备上的第一个 UID 而不是第二个?
在2下,在发送电子邮件之前,我正在调用firebase.auth().currentUser.updateEmail(email),但由于某种原因,它似乎没有将电子邮件与firebase中的UID相关联。我可以在 Firebase 身份验证选项卡中看到 - UID 仍显示为标识符(匿名)。这可能是问题的根本原因,否则电子邮件会在那里,只是未经身份验证。
欢迎任何想法!
解决方案
将电子邮件地址设置为匿名帐户不会将其提供商突然变为电子邮件+密码。它仍然是一个匿名帐户,现在它还有一个与之关联的电子邮件地址。要将用户与电子邮件+密码帐户相关联,您必须使用电子邮件+密码凭据登录,然后将这些凭据链接到现有匿名帐户。
要链接帐户/提供者,您必须在同一设备上为两个提供者创建凭据并调用相关 API 来链接它们。
由于您在第一台设备上只有匿名登录的 UID,因此无法在第二台设备上重新创建该 UID。这意味着无法将第二台设备上的电子邮件链接 UID 帐户链接到第一台设备上的匿名 UID。
推荐阅读
- python - 我究竟做错了什么?半径 = 半径 + 25
- heroku - 如何将heroku dynos的“进入睡眠”时间设置为30分钟以外的值?
- scala - 如何以kafka为源处理结构化流中的每个值?
- scala - 将映射数据转换为 DataFrame 时出现 NullPointerException
- vala - 如何在 Vala 中使用 C 库?或者如何使用 g-ir-scanner?
- python - 保存的 Gensim LdaMallet 模型在不同的控制台中不起作用
- c# - C# WPF 按索引检查 ListView 项目?
- json - 在ansible playbook中过滤json格式的输出
- javascript - 用 JS 附加 HTML。C#
- java - 如何在两个反向代理后面配置 keycloak?