我正在尝试使用我的个人访问令牌(在开发人员仪表板页面上生成)向Uber API发出GET请求。当我用我的SERVER TOKEN执行请求时,如下所示,我收到了回复。
headers = {'Authorization' : 'Token '+server_token}
payload = {'latitude' : start_lat,
'longitude' : start_lon}
r = requests.get(base_url + products_urn, params = payload, headers = headers)
print r.url
print r.json()
此代码的结果是:
https://api.uber.com/v1.2/products?latitude=40.53&longitude=-80.17
{u'products': [{u'upfront_fare_enabled': True, u'capacity': ...
当我尝试使用我的个人访问令牌时,通过更改
headers = {'Authorization' : 'Token '+server_token}
到
headers = {'Authorization' : 'Bearer '+access_token}
(这是API文档使用access_token的说法)结果是:
https://api.uber.com/v1.2/products?latitude=40.53&longitude=-80.17
{u'message': u'No authentication provided.', u'code': u'unauthorized'}
我意识到我不需要访问令牌来访问产品'端点,我只是以它为例。
使用个人访问令牌发出Uber API请求的正确方法是什么?
我是API游戏的新手,欢迎任何帮助,谢谢!
答案 0 :(得分:2)
如果未正确输入访问令牌,则可以收到此授权失败。从这一方面来看,API调用似乎格式正确,因此请查看访问令牌条目。
请查看这段卷曲代码:
curl -H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'Accept-Language: en_US' \
-H 'Content-Type: application/json' \
'https://sandbox-api.uber.com/v1.2/products?latitude=40.53&longitude=-80.17'
这将对API调用做出正确的响应。另外,请查看API调用的网址是https://sandbox-api.uber.com。请将此URL用于所有API测试,因为此环境仅用于测试目的,而不是用于生产环境。
一切顺利,