如果用户已经无密码登录,firebase 可以设置密码身份验证吗?
Posted
技术标签:
【中文标题】如果用户已经无密码登录,firebase 可以设置密码身份验证吗?【英文标题】:Can firebase setup password authentication if user already has passwordless sign on? 【发布时间】:2019-11-12 16:17:28 【问题描述】:我在我的前端 JS 项目(firebase web)中使用了 firebase。我设置的当前身份验证是对用户使用无密码(电子邮件链接)身份验证。是否可以为已存在的无密码登录用户设置密码登录?
【问题讨论】:
【参考方案1】:我发现你可以打电话:
firebase.auth().currentUser.updatePassword()
为已设置无密码登录的用户设置密码。
【讨论】:
我不认为您还找到了一种方法来识别已经通过无密码(电子邮件链接)身份验证进行身份验证的任何用户?我需要将我的用户从无密码电子邮件登录迁移到有密码的电子邮件登录(因为我必须放弃对无密码登录的支持),但由于 Firebase API 有限,我不确定如何识别哪些用户已经迁移,哪些用户仍然需要被迁移。 用户对象有一个列出提供者/登录方法的对象,您可以检查其中是否包含密码方法。一些细节:firebase.google.com/docs/auth/web/… 谢谢,现在检查一下...currentUser.providerInfo
返回一个UserInfo
的数组,根据文档,每个数组只包含一个email
字段,但没有password
字段。它还包含一个providerId
字段,但仅指定其为string
类型。他们没有记录字符串可以解析的内容,但据我所知,它可能只会说“Firebase”(尽管我可能记错了)。您能否提供一个代码 sn-p 来详细说明您是如何做到的?
与我关于如何识别需要迁移的帐户的问题分开,但我在 Firebase 文档中找到了一个部分,the API reference for updatePassword
,它确认您的 updatePassword()
方法是正确的方法着手将无密码用户升级到有密码的电子邮件身份验证。它说“对于链接到没有密码的身份提供者 (IDP) 的帐户,这将导致该帐户成为基于电子邮件/密码的帐户,同时保持 IDP 链接。”
更新 2:我现在明白你的意思了。 auth().fetchSignInMethodsForEmail(currentUser.email)
为一系列登录方法返回一个 Promise,即 ["password"]
或 ["emailLink"]
。有关该文档页面的更多信息。看来我现在可以继续了!以上是关于如果用户已经无密码登录,firebase 可以设置密码身份验证吗?的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 无密码电子邮件身份验证无法在 iOS 上打开应用