我需要接受自定义用户名进入我的网站(计费者的要求,严格限制字母数字。)并且这些用户名应该可以与用户的电子邮件地址互换以用于登录目的。
我允许用户通过标准 Firebase 电子邮件密码身份验证使用其电子邮件和密码进行注册和登录。用户在记账方处注册,然后记账方通过回发将自定义生成的用户名返回给应用程序。
我创建了一个用户名表,其中包含每个用户名所属用户的 UID(最初有电子邮件和账单生成的用户名)
当用户尝试登录时,我会转到用户名表并查找 UID。此时,我想使用刚刚查找到的 UID 以及用户提供的密码通过标准 firebase 身份验证系统登录用户。
我无法找到任何方法来验证用户密码对于云函数内查找的用户帐户是否有效,以便我可以生成自定义 token 。
我可以通过用户名查找用户,找到电子邮件,将其发送回客户端,并允许使用该电子邮件和用户提供的密码进行登录,但更愿意避免这样做,因为这将允许用户名和电子邮件地址被不良行为者相互关联。
最佳答案
在您的云功能中,除了 firebase-admin
之外,您还可以安装和使用 firebase
软件包,并像初始化网页一样对其进行初始化。这样,您可以使用 admin SDK 查找用户名的电子邮件,然后使用云功能中的 firebase
进行身份验证,使用 signInWithEmailAndPassword
。如果成功,您可以生成自定义 token 并将其发送给客户端。
我不知道这是否是最好的方法,但它确实有效。
关于Firebase在云功能中验证电子邮件密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51752457/