使用新的承载令牌发出axios.get请求

时间:2019-07-12 18:43:06

标签: javascript reactjs azure-ad-b2c

import decodeJWT from "jwt-decode";
import axios from "axios";
import authentication from "react-azure-adb2c";

export const refreshAccessToken = async () => {
  const jwt = decodeJWT(authentication.getAccessToken());
  var current_time = Date.now() / 1000;
  var remaining_time = jwt.exp - current_time;
  if (jwt.exp < current_time) {
    console.log("--generating new token--");
    await authentication.run(async () => {
      axios.defaults.headers.common = {
        Authorization: `bearer ${authentication.getAccessToken()}`
      };
    });
  }
};


export const myAxiosGet = async (url, config) => {
  refreshAccessToken()
    .then(async response => {
      return await axios.get(url, config);
    });
};

我的应用程序使用myAxiosGet()函数来发出任何axios.get请求。我在此代码中遇到2个问题,我尝试了不同的方法来解决该问题,但没有一个起作用。感谢有人给我指点

  1. 未处理的拒绝(TypeError):无法读取未定义的属性'data'

我在axios.get中有then时看到此错误。在使用myAxiosGet()的其他文件中,外观如下

const response = await myUtil.myAxiosGet(API_ENDPOINT,config);
my_items = response.data.myitems; 

如果令牌过期,我必须更新承载令牌并发出请求,否则可以使用在应用程序加载期间添加到index.js中的旧令牌来调用axios.get()

我尝试使用回调,then链接,=>运算符和其他解决方案,但没有一个起作用。

0 个答案:

没有答案