【发布时间】:2015-11-12 16:51:15
【问题描述】:
我们正在开发一个应该从Moves app API 获取数据的应用程序。
在手机上授权我们的应用程序时,如果我们将桌面链接提供的 PIN 提交到 move 应用程序中,我们就可以成功:
https://api.moves-app.com/oauth/v1/authorize?response_type=code&client_id=<client_id>&scope=<scope>&state=<state>
如果我改用移动网站/应用程序链接,这将不起作用:
moves://app/authorize?client_id=<client_id>&scope=activity%20location&state=<state>&redirect_uri=<redirect_uri>
注意:<redirect_uri>==encodeURIComponent("mymovesconnector:8081/callback")。
我们从 Moves API 得到的响应是 400:{"error":"invalid_grant"}。
来自docs,它表示invalid_grant 可能发生在以下任一情况下:
- 请求中的代码无效或
- 代码已过期(目前有效期为 5 分钟)或
- 代码已被撤销,因为它已在访问令牌请求中使用(成功和不成功的请求都会撤销代码)或
- 您在需要时缺少 redirect_uri 参数。
我的清单:
- 我想这可能已经发生了,但是通过
moves://提供的代码如何/为什么与通过https://请求提供的代码不同?我对此有什么控制权? - 不是我的情况,因为我会在几秒钟内立即使用代码
- 如果可能发生这种情况,除了通过重定向 url 之外还能在哪里发生?
- 我总是提供它。它总是一样的 - 在移动的应用设置中也是如此。
无法弄清楚我错过了什么。一步一步地浏览了许多文档。没有成功。
【问题讨论】:
标签: android api authorization