代码之家  ›  专栏  ›  技术社区  ›  Laurent

保持Firebase auth和数据库之间的电子邮件同步

  •  5
  • Laurent  · 技术社区  · 9 年前

    出于安全原因,Firebase auth不允许列出用户的电子邮件或基于用户ID获取电子邮件。因此,在创建用户帐户时,我会将电子邮件副本保存到Firebase数据库中的特定集合中。复制是由在用户创建时触发的云功能进行的(遵循以下准则: https://firebase.google.com/docs/auth/extend-with-functions ).

    Firebase auth提供 updateEmail

    我查看了文档,希望在更新用户身份验证信息时触发云功能。不幸的是,我找不到这样的功能。

    admin SDK .最后一个解决方案有效,但绕过了由执行的检查 这确保了新的电子邮件不会被其他帐户使用。此外 account hijacking protection 执行人 更新邮件

    任何适当解决这个问题的想法都是受欢迎的。

    1 回复  |  直到 9 年前
        1
  •  2
  •   bojeil    9 年前

    以下是几个选项:

    1. 当用户想要更新电子邮件时,将其id令牌和新电子邮件发送到您的服务器或firebase function http端点。在这里,您可以使用管理SDK验证ID令牌,然后使用客户端SDK require('firebase') ,使用ID令牌中的uid, admin.auth().createCustomToken(uid) ,然后使用客户端SDK, firebase.auth().signInWithCustomToken(customToken) .然后你可以打电话 user.updateEmail(newEmail)

    2. 始终仅保存uid,并仅使用Admin SDK admin.auth().getUser(uid)

    3. 不需要保存任何内容。使用CLI SDK下载所有用户及其电子邮件。检查 https://firebase.google.com/docs/cli/auth#authexport 这也是更好的,因为你将始终能够获得每个用户的最新电子邮件,即使他们撤销了电子邮件更改。