【发布时间】:2016-01-31 23:42:37
【问题描述】:
借助 Firebase,我可以使用电子邮件地址注册和登录用户。但是,如果我希望应用程序基于用户名怎么办。例如,您会使用“Bobzilla”而不是“Bob@mail.com”登录?
Firebase 可以做到这一点吗?
【问题讨论】:
标签: firebase firebase-authentication
借助 Firebase,我可以使用电子邮件地址注册和登录用户。但是,如果我希望应用程序基于用户名怎么办。例如,您会使用“Bobzilla”而不是“Bob@mail.com”登录?
Firebase 可以做到这一点吗?
【问题讨论】:
标签: firebase firebase-authentication
Firebase 身份验证中没有内置默认的用户名+密码提供程序。但是您可以使用instructions in the Firebase documentation 创建自己的自定义身份提供程序。这需要在可信环境中运行的代码,您可以使用自己的服务器或Cloud Functions for Firebase。现在甚至还有example of this in the functions-samples repo。
或者:您可以使用内置的电子邮件+密码提供程序,只需在用户名后面添加任何域。所以一旦你确定了用户名,就用<username>@vikzillasapp.com注册你的用户。
请注意,如果用户忘记密码,这将使他们无法重置密码,因为 Firebase 使用电子邮件地址发送密码重置电子邮件。
【讨论】:
与其使用为用户分配电子邮件地址的方法,不如在数据库中查找电子邮件地址是更好的选择。
一个例子是:
【讨论】:
您可以使用firebase custom auth。自定义身份验证是一种用户可以使用自定义令牌登录到应用程序的方法。
但是,当用户将用户名和密码发送到该后端时,您需要后端代码 create custom token。
幸运的是,现在有firebase cloud 功能,带有http 事件,可以轻松解决您的问题。步骤是:
用户通过查询参数 (GET) 或请求正文 (POST) 将用户名和密码发送到云函数 url
云功能会检查用户名和密码是否有效(例如:来自实时数据库)
如果用户名和密码有效,云功能将使用userId创建自定义令牌(您需要保存userId)。然后将其发送到响应正文
然后客户端可以使用该 customToken 登录
【讨论】: