这里发生的是,我有一个应用程序,用户可以在被邀请的情况下进行注册。现有用户需要使用受邀用户的数据和电子邮件地址填写表单。然后,这些数据将通过.push()使用唯一生成的密钥上传到firebase数据库。然后,应用会将电子邮件发送到具有指定注册URL的指定电子邮件地址。看起来像这样:${host}/register/?uid=${keyGeneratedByPush}
。当受邀用户单击链接时,浏览器将从查询字符串获取uid,并从数据库获取其数据。如果一切顺利,则用户单击“提交”,就会调用createUserWithEmailAndPassword()
。接下来的问题是:auth()将生成一个唯一的ID(uid),但是我已经有一个现有的用户ID(由push生成)。我想要使它们相同,然后如果用户登录,我可以获取user.uid,并从中获取数据库中的数据。一种可能的解决方案是获取所有用户,循环访问它们,并找到用户对象获取的电子邮件地址,但是为什么要有ID。那么如何使两个id相同呢?
答案 0 :(得分:1)
您可以创建一个自定义身份验证提供程序,并在其中使用推送ID作为您的UID。
但我建议您不要这样做。我看到邀请中的注册/邀请令牌是与您生成的UID不同的实体。虽然(取决于您的用例)它们之间可能存在1:1映射,但这些值具有不同的含义。一个标识发送给潜在用户的特定邀请,另一个标识特定的用户。
我会保留(待定)邀请令牌的列表,以及发送给它们的电子邮件地址。然后,当用户单击邀请中的链接时,您可以查找它是否是正确的电子邮件地址(如果您关心的话),并将最终的UID与邀请代码相关联(如果您关心的话)。