getIdToken()不是函数,即使它像firebase文档中的函数一样使用

时间:2019-08-18 09:19:29

标签: javascript node.js firebase firebase-authentication

我现在正在处理firebase身份验证,并且正在关注此Firebase文档。

访问https://firebase.google.com/docs/auth/admin/manage-cookies#sign_in

// When the user signs in with email and password.
firebase.auth().signInWithEmailAndPassword('user@example.com', 'password').then(user => {
  // Get the user's ID token as it is needed to exchange for a session cookie.
  return user.getIdToken().then(idToken = > {
    // Session login endpoint is queried and the session cookie is set.
    // CSRF protection should be taken into account.
    // ...
    const csrfToken = getCookie('csrfToken')
    return postIdTokenToSessionLogin('/sessionLogin', idToken, csrfToken);
  });
})

我希望我可以通过使用该功能获得令牌。但这不起作用,因为代码中的用户没有getIdToken()函数。

2 个答案:

答案 0 :(得分:1)

要获取ID令牌,只需直接调用auth的currentUser#getIdToken

const idToken = await firebase.auth().currentUser.getIdToken()

答案 1 :(得分:0)

7。* 版本以来,事情似乎发生了变化。要获得它:

firebase.auth().signInWithEmailAndPassword('user@example.com', 'password').then(({ user }) => {
  // Get the user's ID token as it is needed to exchange for a session cookie.
  return user.getIdToken().then(idToken = > {
    // Session login endpoint is queried and the session cookie is set.
    // CSRF protection should be taken into account.
    // ...
    const csrfToken = getCookie('csrfToken')
    return postIdTokenToSessionLogin('/sessionLogin', idToken, csrfToken);
  });
})

请注意,您现在需要使用user.user.getIdToken(),或者像我在示例中那样使用解构。