Java Uber 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开发者仪表板上的访问令牌。在“设置”选项卡的“使用个人访问令牌测试”部分中,有一个“生成新访问令牌”按钮。单击此按钮将生成访问令牌 我正在设置上面在授权标头中生成的

我目前正致力于将Uber rest api与我的Alexa技能进行集成

我无法使用Uber API发出乘车请求。我正在使用API的沙盒版本:

 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