我目前正致力于将Uber rest api与我的Alexa技能相结合。
我无法使用Uber API发出乘车请求。我正在使用API的沙箱版本:
https://sandbox-api.uber.com/v1/requests
当我调用上面的API时,我得到了:
" 401未经授权"作为回应。
我正在使用Java 8进行开发。
我正在使用Uber开发人员仪表板中的访问令牌。在" SETTINGS"选项卡,"测试个人访问权限"部分,有一个" GENERATE NEW ACCESS TOKEN"按钮。单击此按钮可生成访问令牌。
我在Authorization标头中设置了上面生成的访问令牌。以下是代码段:
HttpPost httpPost = new HttpPost("https://sandbox-api.uber.com/v1/requests");
httpPost.setHeader("Authorization", "Bearer " + access_token);
我是否需要在" AUTHORIZATIONS"下设置任何内容?优步开发者信息中心中的标签?目前我没有做任何更改,并将所有内容都保留为默认值。
在标题中设置访问令牌之前,是否需要对其进行编码?
请告诉我。
非常感谢。
答案 0 :(得分:1)
很遗憾,您无法将仪表板生成的令牌用于"受限访问"范围(例如requests
所需的POST v1/requests
),您必须通过OAuth步骤生成访问令牌以在Sandbox中进行测试。
由于您无法使用仪表板令牌在沙箱中测试POST v1/requests
端点,请尝试使用此方法快速生成要测试的令牌:
在浏览器中转到此网址(将YOUR_CLIENT_ID替换为您的应用程序客户端ID,将YOUR_CALLBACK_URL替换为您的回调网址 - 在控制台的“授权”标签中设置回调网址 - 可以是localhost
):
https://login.uber.com/oauth/v2/authorize?response_type=code&client_id= YOUR_CLIENT_ID&scope=request&redirect_uri=YOUR_CALLBACK_URL
使用您的超级开发者帐户登录,然后点击"允许"
您将被重定向到redirect_uri
code
查询字符串,复制code
的值并将其粘贴到此cURL命令中以获取您的访问令牌(替换还需要所有其他值:
curl -F 'client_secret=YOUR_CLIENT_SECRET' \
-F 'client_id=YOUR_CLIENT_ID' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=YOUR_REDIRECT_URI' \
-F 'code=CODE_FROM_REDIRECT' \
https://login.uber.com/oauth/v2/token
如果成功,您应该在回复中获得access_token
。
在标题中设置访问令牌之前,您也不必对其进行编码。
我希望有所帮助!