如何使用Uber API的个人访问令牌? (获得'未提供身份验证。')

时间:2018-01-17 02:28:18

标签: python api http-headers access-token uber-api

我正在尝试使用我的个人访问令牌(在开发人员仪表板页面上生成)向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游戏的新手,欢迎任何帮助,谢谢!

1 个答案:

答案 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测试,因为此环境仅用于测试目的,而不是用于生产环境。

一切顺利,