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

时间:2016-05-03 10:11:54

标签: python oauth uber-api

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

通过收到的访问令牌,我可以获得用户档案,用户历史等信息。但每当我执行乘坐请求(使用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"}.

我无法找到我错过的东西。 任何人都可以提出可能存在的问题吗?

1 个答案:

答案 0 :(得分:3)

在这种情况下授权错误“未授权”表示您正在使用的访问令牌不足以用于您尝试呼叫的端点。因为您描述了访问令牌对GET /v1/me等其他端点有效但不适用于POST /v1/requests,我会推测访问令牌未获得request范围的授权。

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

  • token exchange response中,列出了已授予的范围。
  • 如果您使用的是优步OAuth的v2,您的访问令牌很可能是签名的JWT。使用JWT.io上的调试器查看您的访问令牌已获得授权的范围。

如果访问令牌实际上缺少request范围,则只需在将用户发送到授权URL时明确指定该范围。

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

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