【问题标题】:can't authorise moves through app link无法通过应用链接授权移动
【发布时间】: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 可能发生在以下任一情况下:

  1. 请求中的代码无效或
  2. 代码已过期(目前有效期为 5 分钟)或
  3. 代码已被撤销,因为它已在访问令牌请求中使用(成功和不成功的请求都会撤销代码)或
  4. 您在需要时缺少 redirect_uri 参数。

我的清单:

  1. 我想这可能已经发生了,但是通过moves:// 提供的代码如何/为什么与通过https:// 请求提供的代码不同?我对此有什么控制权?
  2. 不是我的情况,因为我会在几秒钟内立即使用代码
  3. 如果可能发生这种情况,除了通过重定向 url 之外还能在哪里发生?
  4. 我总是提供它。它总是一样的 - 在移动的应用设置中也是如此。

无法弄清楚我错过了什么。一步一步地浏览了许多文档。没有成功。

【问题讨论】:

    标签: android api authorization


    【解决方案1】:

    在写下我的问题时,我设法找到了解决这个问题的方法。

    文档没有指出response_type=code 也可能用于moves:// 链接。我尝试添加这个参数,它成功了!

    注意:这仅在虚拟 android 设备 (Genymotion) 上进行了测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 2014-03-03
      • 2017-01-30
      • 2022-10-13
      相关资源
      最近更新 更多