gpt4 book ai didi

javascript - Firebase ID token 在一小时内到期

转载 作者:行者123 更新时间:2023-12-04 08:31:50 24 4
gpt4 key购买 nike

所以我正在使用 redux-saga在我的 native 应用程序中并尝试使用刷新 token 但没有用,所以我的方法是 app.js 中的以下方法,以便专门为每个请求获取 token 并强制刷新它:

  handleResponse = async () => {
const {dispatch} = this.store;
await axios.interceptors.request.use(config => {
// Important: request interceptors **must** return the request.
console.log("refreshToken")
let user = firebase.auth().currentUser;
firebase.auth().onAuthStateChanged(function(user) { if (user) {
console.log("auth changed: ",user)
user.getIdToken(true).then((token) => {
setAccessToken(token);
config.headers.authorization = token;
}
);
} else { console.log("didn't auth change") } });
console.log("req in handle response: ",JSON.stringify(config));
return config;
});
axios.interceptors.response.use(config => config, (err) => {
if (err.response) {
const response = err.response;
const state = this.store.getState();
if (
response.status === 401
&& state.auth.isAuthenticated
) {
dispatch(logout());
}
}
return Promise.reject(err);
});
};
但它总是在一个小时后结束,抛出以下错误:

Firebase ID token has expired. Get a fresh token from your client app and try again (auth/id-token-expired). See https://firebase.google.com/docs/auth/admin/verify-id-tokens for details on how to retrieve an ID token.


所以我想知道是否有另一种方法可以尝试从我这边解决这个问题?
提前致谢。

最佳答案

Firebase 身份验证 token 每小时自动刷新一次。这是 SDK 的一个功能,您无需执行任何操作即可启用它。
你绝对不想打电话firebase.auth().onAuthStateChanged对于每个请求。这将启动一个持久监听器,并在每次使用时添加一个新的回调。通常,您只为应用程序全局添加一个监听器,并在更新发生时使用它。
如果您需要知道 SDK 何时刷新 token 以便立即获得新 token ,则应改为使用 onIdTokenChanged设置每次用户 token 更改时都会调用的回调。同样,您应该只为您的应用程序全局设置其中之一,并在请求时使用其当前值。

关于javascript - Firebase ID token 在一小时内到期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64984622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com