[英]How can I request a new access token after the existing token expires with the firebase refresh token?
I have a react app and I am using firebase auth for authentication.我有一个反应应用程序,我正在使用 firebase auth 进行身份验证。 I have an auth context and everything works great.
我有一个身份验证上下文,一切都很好。 The issue is after 1 hour, the token expires and since we are using our auth token for api authentication the apis fail to work after one hour.
问题是 1 小时后,令牌过期,由于我们使用我们的身份验证令牌进行 api 身份验证,API 在一小时后无法工作。 How can I monitor when the token expires, and request a new one using the refresh token that is in firebase?
如何监控令牌何时过期,并使用 firebase 中的刷新令牌请求新令牌?
useEffect(() => {
const unsubscribe = auth.onAuthStateChanged((user) => {
if (user) {
const lastSignInTime = new Date(user.metadata.lastSignInTime);
const lastSignInTimeTimeStamp = Math.round(lastSignInTime.getTime() / 1000);
const yesterdayTimeStamp = Math.round(new Date().getTime() / 1000) - 24 * 3600;
if (lastSignInTimeTimeStamp < yesterdayTimeStamp) {
logout();
setCurrentUser({
...currentUser,
user: null,
isVerified: false,
email: '',
accessToken: '',
});
return false;
}
}
setCurrentUser({
...currentUser,
user: user || null,
isVerified: user ? user.emailVerified : false,
email: user ? user.email : '',
accessToken: user ? user.Aa : '',
});
setLoading(false);
});
return unsubscribe;
}, []);
We do have a method like onAuthStateChanged
我们确实有类似
onAuthStateChanged
的方法
auth.onIdTokenChanged(async (user) => {
const token = await user?.getIdToken();
localStorage.setItem("firebase_token_id", token);
});
Store the new token in your preferred storage and later call API with it.将新令牌存储在您的首选存储中,然后使用它调用 API。
Reference: https://firebase.google.com/docs/reference/js/v8/firebase.auth.Auth#onidtokenchanged参考: https://firebase.google.com/docs/reference/js/v8/firebase.auth.Auth#onidtokenchanged
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.