无法使用firebase v4,javascript重新进行身份验证

时间:2017-07-11 15:54:09

标签: javascript firebase firebase-authentication

我之前能够触发onAuthStateChanged,而无需在用户使用这些方法一个接一个地验证其电子邮件后签署用户。

firebase.auth.currentUser.reload()
firebase.auth.currentUser.getToken(true)

我将其更新为getIdToken

firebase.auth.currentUser.reload()
firebase.auth.currentUser.getIdToken(true)

然而,随着firebase的v4以前和新方法不再重新触发onAuthStateChange。现在还有办法实现吗?即,对于用户不需要注销的注册流程 - >注册 - >验证电子邮件 - >点击"继续"调用上述2个函数的按钮 - >现在正在验证用户电子邮件触发onAuthStateChanged

1 个答案:

答案 0 :(得分:2)

在Firebase身份验证的2.x版中,只有在用户的身份验证状态发生更改时才会调用身份验证状态更改处理程序。所以当他们登录或退出时。

在Firebase身份验证SDK的3.x版中,还调用了令牌刷新的相同回调。但这导致开发人员在有效更新UI时遇到问题,因为即使身份验证状态没有改变(即使令牌确实存在),也会调用此回调。

这就是为什么在v4中这种行为确实发生了变化的原因:onAuthStateChanged不再为了令牌刷新而触发。在这种情况下,执行会有一个单独的onIdTokenChanged()方法:https://firebase.google.com/docs/reference/js/firebase.auth.Auth#onIdTokenChanged

从那里:

  

添加观察者以更改已登录用户的ID令牌,其中包括登录,注销和令牌刷新事件。此方法与{4.0}之前的firebase.auth.Auth#onAuthStateChanged具有相同的行为。

     

示例:

firebase.auth().onIdTokenChanged(function(user) {
  if (user) {
    // User is signed in or token was refreshed.
  }
});
相关问题