Uber API未经授权的访问问题

时间:2016-10-17 19:56:46

标签: java uber-api

我目前正致力于将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"下设置任何内容?优步开发者信息中心中的标签?目前我没有做任何更改,并将所有内容都保留为默认值。

在标题中设置访问令牌之前,是否需要对其进行编码?

请告诉我。

非常感谢。

1 个答案:

答案 0 :(得分:1)

很遗憾,您无法将仪表板生成的令牌用于"受限访问"范围(例如requests所需的POST v1/requests),您必须通过OAuth步骤生成访问令牌以在Sandbox中进行测试。

由于您无法使用仪表板令牌在沙箱中测试POST v1/requests端点,请尝试使用此方法快速生成要测试的令牌:

  1. 在浏览器中转到此网址(将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
    
  2. 使用您的超级开发者帐户登录,然后点击"允许"

  3. 您将被重定向到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
    
  4. 如果成功,您应该在回复中获得access_token

    the Authorization guide

    中的更多信息

    在标题中设置访问令牌之前,您也不必对其进行编码。

    我希望有所帮助!