用户名身份验证而不是电子邮件
Username authentication instead of email
借助 Firebase,我可以使用电子邮件地址注册和登录用户。但是,如果我希望该应用程序基于用户名怎么办。例如,您将使用 "Bobzilla" 而不是 "Bob@mail.com"?
登录
这可以用 Firebase 实现吗?
Firebase 身份验证中没有内置默认的用户名+密码提供程序。但是您可以使用 instructions in the Firebase documentation. This requires code that runs in a trusted environment, for which you can use your own server or Cloud Functions for Firebase. There is now even an example of this in the functions-samples repo.
创建自己的自定义身份提供者
或者:您可以使用内置的电子邮件+密码提供程序,只需在用户名后面添加任何域。因此,一旦您确定了用户名,请使用 <username>@vikzillasapp.com
.
注册您的用户
请注意,这将使用户在忘记密码时无法重设密码,因为 Firebase 使用电子邮件地址发送密码重设电子邮件。
您可以使用 firebase custom auth。自定义身份验证是一种用户可以使用自定义令牌登录应用程序的方法。
但是,您需要后端代码,以便 create custom token 当用户将用户名和密码发送到该后端时。
幸运的是,现在有firebase云功能,带有http事件,可以轻松解决你的问题。步骤是:
用户通过查询参数 (GET) 或请求正文 (POST) 将用户名和密码发送到云函数 url
云函数将检查用户名和密码是否有效(例如:来自实时数据库)
如果用户名和密码有效,云函数将使用userId创建自定义令牌(您需要保存userId)。然后发送到response body
客户端然后可以使用该 customToken
登录
与其使用为用户分配电子邮件地址的方法,不如在数据库中查找电子邮件地址更好。
例如:
- 提示用户名和密码登录
- 验证用户名是否存在于您的数据库中并检索该帐户的相应电子邮件地址
- 将此电子邮件地址无缝传递到登录过程
借助 Firebase,我可以使用电子邮件地址注册和登录用户。但是,如果我希望该应用程序基于用户名怎么办。例如,您将使用 "Bobzilla" 而不是 "Bob@mail.com"?
登录这可以用 Firebase 实现吗?
Firebase 身份验证中没有内置默认的用户名+密码提供程序。但是您可以使用 instructions in the Firebase documentation. This requires code that runs in a trusted environment, for which you can use your own server or Cloud Functions for Firebase. There is now even an example of this in the functions-samples repo.
创建自己的自定义身份提供者或者:您可以使用内置的电子邮件+密码提供程序,只需在用户名后面添加任何域。因此,一旦您确定了用户名,请使用 <username>@vikzillasapp.com
.
请注意,这将使用户在忘记密码时无法重设密码,因为 Firebase 使用电子邮件地址发送密码重设电子邮件。
您可以使用 firebase custom auth。自定义身份验证是一种用户可以使用自定义令牌登录应用程序的方法。
但是,您需要后端代码,以便 create custom token 当用户将用户名和密码发送到该后端时。
幸运的是,现在有firebase云功能,带有http事件,可以轻松解决你的问题。步骤是:
用户通过查询参数 (GET) 或请求正文 (POST) 将用户名和密码发送到云函数 url
云函数将检查用户名和密码是否有效(例如:来自实时数据库)
如果用户名和密码有效,云函数将使用userId创建自定义令牌(您需要保存userId)。然后发送到response body
客户端然后可以使用该 customToken
登录
与其使用为用户分配电子邮件地址的方法,不如在数据库中查找电子邮件地址更好。
例如:
- 提示用户名和密码登录
- 验证用户名是否存在于您的数据库中并检索该帐户的相应电子邮件地址
- 将此电子邮件地址无缝传递到登录过程