java - Uber API 未经授权访问问题

标签 java uber-api

我目前正在致力于将 Uber Rest api 与我的 Alexa 技能集成。

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

 https://sandbox-api.uber.com/v1/requests

当我调用上述 API 时,我得到:

"401 Unauthorized" as the response.

我正在使用 Java 8 进行开发。

我正在使用 Uber 开发人员仪表板中的访问 token 。在“设置”选项卡下的“使用个人访问 token 进行测试”部分中,有一个“生成新的访问 token ”按钮。单击此按钮会生成访问 token 。

我正在授权 header 中设置上面生成的访问 token 。这是代码片段:

HttpPost httpPost = new HttpPost("https://sandbox-api.uber.com/v1/requests");
httpPost.setHeader("Authorization", "Bearer " + access_token);

我需要在 Uber 开发者仪表板的“授权”选项卡下进行任何设置吗?目前我还没有进行任何更改并保留所有内容默认。

在 header 中设置访问 token 之前是否需要对其进行编码?

请告诉我。

非常感谢。

最佳答案

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

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

  1. 在浏览器中访问此网址(将 YOUR_CLIENT_ID 替换为您的应用程序客户端 ID,将 YOUR_CALLBACK_URL 替换为您的回调 URL - 在仪表板的“授权”选项卡中设置回调 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. 使用您的 Uber 开发者帐户登录并点击“允许”

  3. 您将被重定向到带有 code 查询字符串的 redirect_uri,复制 code 的值并将其粘贴到此中用于获取访问 token 的 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

更多信息请参见 the Authorization guide

在将访问 token 设置到 header 中之前,您也不必对其进行编码。

希望对您有所帮助!

关于java - Uber API 未经授权访问问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40094617/

相关文章:

java - 在 netbeans 中清理和构建后从 dist 文件夹运行 jar 文件时不读取 xml 文件

android - 优步叫车请求按钮卡在 "Requesting"

android - 无法在服务器端使用 Uber 刷新 token 重新生成 Uber 访问 token

java - 如果 JAXB Marshals 根元素只有一个属性,则没有关闭标记

java - Android 监听触摸释放

json - 如何验证 uber webhook api?

uber-api - Webhook 未收到 Uber 回调

c - C 语言的 UberEats 系统 - 文件处理

java - HTTP 403 禁止 - Auth JASS Spring Camel

java - 异步插入后无法从android sqlite数据库检索数据