使用Firebase,我可以使用电子邮件地址注册和登录用户 . 但是,如果我希望该应用程序是基于用户名的 . 例如,您将使用“Bobzilla”而不是“Bob@mail.com”登录?
Firebase可以实现吗?
你可以使用firebase custom auth . 自定义身份验证是一种用户可以使用自定义令牌登录应用程序的方法 .
但是,当用户向该后端发送用户名和密码时,您需要后端代码到create custom token .
幸运的是,现在有firebase Cloud 功能,带有http事件,可以轻松解决您的问题 . 步骤是:
用户通过查询参数(GET)或请求正文(POST)将用户名和密码发送到 Cloud 功能网址
Cloud功能将检查用户名和密码是否有效(例如:来自实时数据库)
如果用户名和密码有效, Cloud 功能将使用userId创建自定义令牌(您需要保存userId) . 然后将其发送给响应机构
客户端然后可以使用该customToken登录
Firebase身份验证中没有内置的默认用户名密码提供程序 . 但您可以使用instructions in the Firebase documentation创建自己的自定义身份提供程序 . 这需要在受信任的环境中运行的代码,您可以使用自己的服务器或Cloud Functions for Firebase . 现在甚至还有example of this in the functions-samples repo .
或者:您可以使用内置的电子邮件密码提供程序,只需添加用户名后面的任何域 . 因此,一旦确定了用户名,请使用 <username>@vikzillasapp.com 注册您的用户 .
<username>@vikzillasapp.com
请注意,如果忘记密码,用户将无法重置密码,因为Firebase会使用电子邮件地址发送密码重置电子邮件 .
您可以选择在数据库中查找电子邮件地址,而不是使用为用户分配电子邮件地址的方法 .
一个例子是:
使用用户名和密码提示用户名登录
验证数据库中是否存在用户名,并检索该帐户的相应电子邮件地址
将此电子邮件地址无缝传递到登录过程
3 回答
你可以使用firebase custom auth . 自定义身份验证是一种用户可以使用自定义令牌登录应用程序的方法 .
但是,当用户向该后端发送用户名和密码时,您需要后端代码到create custom token .
幸运的是,现在有firebase Cloud 功能,带有http事件,可以轻松解决您的问题 . 步骤是:
用户通过查询参数(GET)或请求正文(POST)将用户名和密码发送到 Cloud 功能网址
Cloud功能将检查用户名和密码是否有效(例如:来自实时数据库)
如果用户名和密码有效, Cloud 功能将使用userId创建自定义令牌(您需要保存userId) . 然后将其发送给响应机构
客户端然后可以使用该customToken登录
Firebase身份验证中没有内置的默认用户名密码提供程序 . 但您可以使用instructions in the Firebase documentation创建自己的自定义身份提供程序 . 这需要在受信任的环境中运行的代码,您可以使用自己的服务器或Cloud Functions for Firebase . 现在甚至还有example of this in the functions-samples repo .
或者:您可以使用内置的电子邮件密码提供程序,只需添加用户名后面的任何域 . 因此,一旦确定了用户名,请使用
<username>@vikzillasapp.com
注册您的用户 .请注意,如果忘记密码,用户将无法重置密码,因为Firebase会使用电子邮件地址发送密码重置电子邮件 .
您可以选择在数据库中查找电子邮件地址,而不是使用为用户分配电子邮件地址的方法 .
一个例子是:
使用用户名和密码提示用户名登录
验证数据库中是否存在用户名,并检索该帐户的相应电子邮件地址
将此电子邮件地址无缝传递到登录过程