python - 在 python 中提供的 Uber 身份验证中的 OAuth 2.0 凭据无效

标签 python oauth uber-api

我正在使用 python 集成 Uber 服务器端 API。我能够成功运行授权流程并获取访问 token 。

通过收到的访问 token ,我可以获得用户个人资料、用户历史记录等信息。但是每当我发出乘车请求(使用 Sandbox )时,就会发生以下错误。

HTTP/1.1 **401 Unauthorized**<br/>
Server: nginx<br/>
Date: Tue, 03 May 2016 09:29:19 GMT<br/>
Content-Type: application/json<br/>
Content-Length: 75<br/>
Connection: keep-alive<br/>
X-Uber-App: uberex-sandbox<br/>
Strict-Transport-Security: max-age=0<br/>
X-Content-Type-Options: nosniff<br/>
X-XSS-Protection: 1; mode=block

{"message":"Invalid OAuth 2.0 credentials provided.","code":"unauthorized"}.

我无法找到我到底缺少什么。 谁能建议可能是什么问题?

最佳答案

在这种情况下,授权错误“未经授权”表示您正在使用的访问 token 对于您尝试调用的端点来说是不够的。因为您描述访问 token 对于其他端点(例如 GET/v1/me)有效,但对于 POST/v1/requests 无效,所以我推测访问 token 是未获得请求范围的授权。

您可以通过两种方式检查:

  • token exchange response ,列出已授予的范围。
  • 如果您使用的是 Uber OAuth v2,您的访问 token 很可能是经过签名的 JWT。在 JWT.io 上使用调试器查看您的访问 token 已被授权的范围。

如果访问 token 实际上缺少请求范围,您只需在将用户发送到授权网址时显式指定该范围即可。

例如https://login.uber.com/oauth/v2/authorize?client_id=123&scopes=profile%20request...

请记住,请求范围是有限的访问范围,这意味着您可以在开发过程中向 OAuth 应用程序的所有者和任何注册开发人员授权。准备好投入生产后,请向 Uber 提交请求以获取批准,并附上已完成应用程序的演示。

关于python - 在 python 中提供的 Uber 身份验证中的 OAuth 2.0 凭据无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37001353/

相关文章:

twitter - 从 OAuth 捕获访问凭据后要做什么

uber-api - Uber 应用程序的功能性需求与非功能性需求

python - Django REST 框架 : update() based on query string parameter

python - 无法在 Python 中调用我的类

python - H2O 将分数与原始数据集合并

javascript - 尝试使用 Javascript 从 Reddit 获取图像?

ios - SFAuthenticationSession/ASWebAuthenticationSession 和注销

android - 具有 oAuth 和 Intent 处理的 Uber api 授权

android - 如何使用 uber api 获取我附近的出租车位置

python - 循环使用两个计数器