如何在 firebase 版本 9 中使用 getIdToken() auth 方法?

How to use the getIdToken() auth method in firebase version 9?

如何在 firebase 版本 9 中使用 getIdToken() 身份验证方法?

在版本 8 中是这样工作的

import firebase from "firebase";

const token = await firebase.auth().currentUser.getIdToken(/* forceRefresh */ false);

我在版本 9 中尝试过,但它不起作用

import { getIdToken } from "firebase/auth";

const token = await getIdToken(/* forceRefresh */ false);

我也在下面尝试过,但它不起作用

import { getAuth } from "firebase/auth";

const auth = getAuth();
const { currentUser } = auth;

const token = await currentUser.getIdToken(/* forceRefresh */ false);

getIdToken() 函数采用 User 作为参数,而不是 name-spaced SDK 中的 refreshToken 布尔值。

import { getIdToken, onAuthStateChanged } from "firebase/auth";

onAuthStateChanged(auth, async (user) => {
  if (user) {
    const token = await getIdToken(user);
  }
});

就错误而言,getAuth() returns 身份验证实例但用户的身份验证状态现在可能已经加载。在 onAuthStateChanged 中尝试 运行 或按照@Frank 的建议添加空检查。

看起来 getIdToken() 函数在最新版本 (9.6.6) 中接受两个参数:用户和布尔值。所以,这是我的工作代码:

import { getAuth, getIdToken } from "firebase/auth"

const auth = getAuth()
const { currentUser } = auth
const token = await getIdToken(currentUser, true)