如何发送 firebase refreshToken ?反应
How to send firebase refreshToken ? React
我是第一次使用 firebase。 (React 应用程序) 我有 3 个用于登录的社交 Auth Provider。 Google、脸书和苹果。一切都很好,直到这里。但是 1 小时后我的令牌过期,我必须注销并再次登录以刷新我的令牌。我将过期时间保存到我的 localStorage 以检查令牌是否过期,如果是,我手动调用 signOut() 函数。但这并不能解决问题,也不是一个好办法。 我找不到如何在 firebase 中刷新令牌。另外,我是否需要再次检查过期并发送刷新令牌,或者我必须在每次页面刷新时刷新令牌?
import React from 'react'
import { useHistory } from "react-router";
import auth from "../utils/Auth";
export const useSocialAuth = () => {
const history = useHistory();
const providerFunc = (socialProvider:any) => {
const provider = socialProvider();
provider
.then((result: any) => {
console.log(result)
auth.login(() => {
localStorage.setItem('exp', result.user._delegate.stsTokenManager.expirationTime)
localStorage.setItem("userID", result.user.uid);
localStorage.setItem("tocaToken", result.user.multiFactor.user.accessToken);
history.push("/");
});
})
.catch((err:any) => console.log(err));
}
return providerFunc;
};
我解决了刷新令牌问题。大家需要补充的是:
firebase.auth().currentUser.getIdToken(true)
当您从浏览器进行调用时 .getIdToken(true)
将自动刷新您的令牌。像这样打电话:
firebase.auth().currentUser.getIdToken(/ forceRefresh / true)
.then(function(idToken) {
}).catch(function(error) {
});
更多信息:https://firebase.google.com/docs/reference/js/v8/firebase.User#getidtoken
我是第一次使用 firebase。 (React 应用程序) 我有 3 个用于登录的社交 Auth Provider。 Google、脸书和苹果。一切都很好,直到这里。但是 1 小时后我的令牌过期,我必须注销并再次登录以刷新我的令牌。我将过期时间保存到我的 localStorage 以检查令牌是否过期,如果是,我手动调用 signOut() 函数。但这并不能解决问题,也不是一个好办法。 我找不到如何在 firebase 中刷新令牌。另外,我是否需要再次检查过期并发送刷新令牌,或者我必须在每次页面刷新时刷新令牌?
import React from 'react'
import { useHistory } from "react-router";
import auth from "../utils/Auth";
export const useSocialAuth = () => {
const history = useHistory();
const providerFunc = (socialProvider:any) => {
const provider = socialProvider();
provider
.then((result: any) => {
console.log(result)
auth.login(() => {
localStorage.setItem('exp', result.user._delegate.stsTokenManager.expirationTime)
localStorage.setItem("userID", result.user.uid);
localStorage.setItem("tocaToken", result.user.multiFactor.user.accessToken);
history.push("/");
});
})
.catch((err:any) => console.log(err));
}
return providerFunc;
};
我解决了刷新令牌问题。大家需要补充的是:
firebase.auth().currentUser.getIdToken(true)
当您从浏览器进行调用时 .getIdToken(true)
将自动刷新您的令牌。像这样打电话:
firebase.auth().currentUser.getIdToken(/ forceRefresh / true)
.then(function(idToken) {
}).catch(function(error) {
});
更多信息:https://firebase.google.com/docs/reference/js/v8/firebase.User#getidtoken