有没有办法直接在axios拦截器中从firebase 9获取id令牌?在firebase 8中是可以的。
import axios from "axios";
import config from "../config";
import { getAuth, getIdToken } from "firebase/auth";
const API = axios.create({
responseType: "json",
baseURL: config.ApiUrl
});
API.interceptors.request.use(async (request) => {
const auth = getAuth();
const { currentUser } = auth;
request.headers = {
Authorization: `Bearer ${await currentUser.getIdToken()}`,
};
return request;
});
currentUser首先是null,因为它是由firebase异步加载的,如何直接访问它,而不总是遇到第一次崩溃的问题,因为用户还没有加载?
谢谢你的帮助。
1条答案
按热度按时间h79rfbju1#
您可以创建一个等待
onAuthStateChanged()
加载身份验证状态并返回包含用户令牌的承诺的函数。第一个
在使用
getAuth()
之前,请确保您已经初始化了Firebase SDK。我建议创建一个不同的文件firebase.js
,初始化所需的服务,并按照this answer中的说明导出示例。