我正在尝试使用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;
};
请让我知道是否需要澄清。谢谢!
答案 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读取问题。