Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase auth user.getIdToken()发送过期令牌_Javascript_Firebase_Firebase Authentication_Axios_Firebase Admin - Fatal编程技术网

Javascript Firebase auth user.getIdToken()发送过期令牌

Javascript Firebase auth user.getIdToken()发送过期令牌,javascript,firebase,firebase-authentication,axios,firebase-admin,Javascript,Firebase,Firebase Authentication,Axios,Firebase Admin,据我所知,getIdToken()默认情况下应该向服务器发送一个未过期的令牌,在内部处理令牌刷新。然而,我从服务器上得到了很多关于过期令牌的错误 在我的前端,我创建了axios实例,如下所示: const base = axios.create({ baseURL: apiUrl, }); base.interceptors.request.use(async (config) => { const token = await getAccessToken(); config

据我所知,getIdToken()默认情况下应该向服务器发送一个未过期的令牌,在内部处理令牌刷新。然而,我从服务器上得到了很多关于过期令牌的错误

在我的前端,我创建了axios实例,如下所示:

const base = axios.create({
  baseURL: apiUrl,
});

base.interceptors.request.use(async (config) => {
  const token = await getAccessToken();
  config.headers.Authorization = `Bearer ${token}`;
  return config;
});

const getAccessToken = async () => {
  const user = firebase.auth().currentUser;
  if (user) {
    const token = await user.getIdToken();
    return token;
  }
  return null;
};
然后在接收服务器上,我通过执行以下操作验证令牌:

const admin = require("firebase-admin");

const auths = req.headers.authorization.split(" ");
admin.auth().verifyIdToken(auths[1]).then(async token => {
  ...
});
我从服务器收到的错误是:

错误:Firebase ID令牌已过期。从客户端应用获取新的ID令牌,然后重试(身份验证/ID令牌已过期)。看见https://firebase.google.com/docs/auth/admin/verify-id-tokens 有关如何检索ID令牌的详细信息。

如果我将
getIdToken()
更改为
getIdToken(true)
,问题就会消失


我验证了对每个请求都调用getAccessToken方法。我有点不明白为什么我的服务器继续抱怨令牌过期,如果有任何帮助,我将不胜感激。

是使用基于角色的身份验证吗?不,我们没有使用基于角色的身份验证。您在调用什么服务器代码?您收到的确切错误消息是什么?对不起,我应该更清楚,我已经更新了问题,谢谢!再次检查您的服务器时钟是否正确。时钟关闭很可能是造成这种情况的根本原因。