Java Uber API未经授权访问问题
我目前正致力于将Uber rest api与我的Alexa技能进行集成 我无法使用Uber API发出乘车请求。我正在使用API的沙盒版本:Java Uber API未经授权访问问题,java,uber-api,Java,Uber Api,我目前正致力于将Uber rest api与我的Alexa技能进行集成 我无法使用Uber API发出乘车请求。我正在使用API的沙盒版本: https://sandbox-api.uber.com/v1/requests 当我调用上述API时,我得到: “401未经授权”作为响应 我正在使用Java8进行开发 我正在使用Uber开发者仪表板上的访问令牌。在“设置”选项卡的“使用个人访问令牌测试”部分中,有一个“生成新访问令牌”按钮。单击此按钮将生成访问令牌 我正在设置上面在授权标头中生成的
https://sandbox-api.uber.com/v1/requests
当我调用上述API时,我得到:
“401未经授权”作为响应
我正在使用Java8进行开发
我正在使用Uber开发者仪表板上的访问令牌。在“设置”选项卡的“使用个人访问令牌测试”部分中,有一个“生成新访问令牌”按钮。单击此按钮将生成访问令牌
我正在设置上面在授权标头中生成的访问令牌。以下是代码片段:
HttpPost httpPost = new HttpPost("https://sandbox-api.uber.com/v1/requests");
httpPost.setHeader("Authorization", "Bearer " + access_token);
我是否需要在Uber开发者仪表板的“授权”选项卡下设置任何内容?目前我没有做任何更改,所有内容都是默认的
在标头中设置访问令牌之前,是否需要对其进行编码
请让我知道
非常感谢。不幸的是,您不能将仪表板生成的令牌用于“受限访问”范围(例如
请求所需的POST v1/请求
),您必须通过OAuth步骤生成一个访问令牌以在沙箱中进行测试
由于您无法使用仪表板令牌在沙箱中测试POST v1/requests
端点,请尝试以下方法以快速生成令牌进行测试:
在浏览器中转到此URL(用应用程序客户端ID替换\u客户端ID,用回调URL替换\u回调\u URL-在仪表板的“授权”选项卡中设置回调URL-可以是localhost
):
使用您的uber开发者帐户登录并单击“允许”
您将被重定向到带有code
查询字符串的redirect\u uri
,复制code
的值,并将其粘贴到此cURL命令中以获取访问令牌(同时替换所有其他所需值):
如果成功,您应该在响应中获得一个access\u令牌
更多信息请访问
在标头中设置访问令牌之前,也不必对其进行编码
我希望这有帮助 在第一步中,我们必须手动复制url并将其放入浏览器中,每次都会在10分钟内得到代码和过期的代码。但是如何通过api调用获取代码呢?。提前感谢或复制url是一次性工作?OAuth 2.0授权授予流的本质是您必须要求用户首次对您的应用进行身份验证(步骤1)。然后,当您将code
交换为access\u令牌
(步骤3)时,您需要将此access\u令牌
保存在某处,并将其用于对API的进一步请求。访问令牌将在有效负载中包含一个refresh\u令牌
,因此您可以在访问令牌在30天后到期时刷新它。
https://login.uber.com/oauth/v2/authorize?response_type=code&client_id= YOUR_CLIENT_ID&scope=request&redirect_uri=YOUR_CALLBACK_URL
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