【发布时间】:2017-05-15 19:47:50
【问题描述】:
我正在尝试检测登录用户的 AuthProvider,以便提供一种使用“reauthenticateWithPopup”重新进行身份验证的简单方法。
最简单的方法是直接从 currentUser 获取对应的 AuthProvider 对象,但是,我认为这是不可能的(如果我错了请纠正我)。
另一种选择是获取 firebase.auth.currenUser.providerId 并执行 switch/case 子句来创建 firebase.auth.AuthProvider。我个人不太喜欢这个选项,因为我必须对字符串进行切换/大小写(例如“google.com”)。不过,这是我能想到的最佳解决方案。
不幸的是,在我实施它时,我意识到 firebase.auth.currenUser.providerId 总是会返回“firebase”,即使我是从谷歌登录或使用电子邮件/密码登录的。这是一个错误吗?我是不是做错了什么?
我可以看到,如果我访问 currentUser.providerData,就会有一个数组,其中包含该用户的所有可用提供程序。但是,这是一个列表,我不确定是否会选择当前使用的列表,以防该用户有多个列表。
附加信息:使用 angularfire2 v4
【问题讨论】:
-
currentUser.providerData中的每个provider都有一个providerId:firebase.auth().currentUser.providerData[0].providerId。您可以使用它来重新验证用户。您还可以提供所有选项来为当前用户重新进行身份验证,并让用户决定使用哪一个。
-
是的,我就是这么想的。但是,我想知道是否有一种直接的方法可以知道这次用于身份验证的方法。如果用户有多种身份验证方式(例如,该帐户与 google、facebook 等链接),那么应该有一种获取当前身份的方法。
标签: firebase firebase-authentication angularfire2