尝试授权Axios获取请求时出错

时间:2019-03-14 04:53:40

标签: rest http axios postman

我正在尝试使用Axios访问Uber API,但遇到了一些麻烦。我已将此数据插入Postman,并且得到200响应代码,没有问题。但是,当我尝试拨打Axios呼叫时,我获得了未经授权的响应代码401。我可以通过代码查找一些帮助,以找出为什么我的授权不能与Axios一起正常工作吗?

这里是我引用的Uber API文档的链接。 Uber API Reference

getRide_Uber = async (addressOrigin, addressDestination) => {
  let origin = await geocodeAddress(addressOrigin);
  let destination = await geocodeAddress(addressDestination);

  const url = "https://api.uber.com/v1.2/estimates/price";

  const params = {
    params: {
      start_latitude: origin.lat,
      start_longitude: origin.lon,
      end_latitude: destination.lat,
      end_longitude: destination.lon
    }
  };

  const headers = {
    headers: {
      Authorization: `Token ${process.env.UBER_SERVER_TOKEN}`
    }
  };

  const response = await axios
    .get(url, params, headers)
    .then(function(response) {
      data = response.data;
    })
    .catch(function(error) {
      console.log(error);
    });
  return data;
};

请让我知道是否需要澄清。谢谢!

2 个答案:

答案 0 :(得分:1)

尝试以下语法,

  const config = {
    headers: {
      Authorization: `Token ${process.env.UBER_SERVER_TOKEN}`
    } 
    params: {
      start_latitude: origin.lat,
      start_longitude: origin.lon,
      end_latitude: destination.lat,
      end_longitude: destination.lon
    }
  };

  const response = await axios
    .get(url, config)
    .then(function(response) {
      data = response.data;
    })
    .catch(function(error) {
      console.log(error);
    });
  return data;

还有一个方面axios,Internet Explorer和较旧的浏览器不支持async / await。所以也请检查您的浏览器版本。

答案 1 :(得分:0)

不确定如何从环境中获取令牌,但服务器令牌未正确传递,从环境中读取时可能会多余一些字符。尝试先在程序本身中使用硬编码令牌运行该程序,一旦确定它不是代码问题,则可以将其移至config / env,然后调试env读取问题。