【问题标题】:Box API OAuth2: multiple redirect_uris, long lasting refresh tokenBox API OAuth2:多个redirect_uris,持久刷新令牌
【发布时间】:2015-05-20 10:15:58
【问题描述】:

我有两个关于测试环境中 Box 的 Oauth2 API 的问题。

  1. 是否可以有多个redirect_URI 地址?我想使用一个地址用于生产(例如,https://my_site.com/box_redirects_here),一个用于正在进行的开发(http://localhost:8000/box_redirects_here),一个用于自动 UI 测试(http://localhost:8001/box_redirects_here)。据我所知,唯一的方法是创建三个不同的 Box 应用程序 - 有没有更简单的方法?顺便说一句,Dropbox 和 Google Drive 都支持多个重定向 URI。
  2. 我有一组自动测试,我想每天运行几次。我面临的挑战是,每次运行这些测试时,我的 refresh_token 都会失效,并且我无法再次使用它——这意味着我无法在几个小时后运行相同的测试集,而无需手动获取新的令牌。一种解决方案是保存刷新令牌,例如保存在文件中,这样我就可以在测试会话中重复使用它。但:
    • 真的很麻烦。
    • 如果不同的开发人员在不同的机器上运行这些测试,而没有共同的文件系统,这实际上是不工作的。
    • 同样,无论出于何种原因,这似乎都不是 Google Drive 或 Dropbox 的问题。

【问题讨论】:

  • 我用于#2 的不太优雅的解决方案是进行自动 UI 测试 (Selenium),将我的应用程序连接到 Box。然后我使用新创建的令牌进行一些后端测试。丑陋,但它大部分时间都有效。

标签: oauth-2.0 box-api


【解决方案1】:
  1. 目前不可能,我同意这样会很好。
  2. 您最好的选择是将访问/刷新令牌对保存到文件或数据库中(如果没有通用文件系统)。OAuth2 spec 向实现者wide latitude 授予他们如何发布刷新令牌,如果他们完全发布它们(我认为 Dropbox 不会。)虽然 Box 的实现使集成测试有点挑战性,但我认为它最终最接近规范的 recommendations

【讨论】:

    【解决方案2】:

    对于您的第一个问题,您可以通过使用redirect_uri 查询参数来接近您想要的。虽然您无法提供任意重定向 URI,但您可以在应用控制台中提供与重定向 URI 相同的基本 URL。

    来自OAuth tutorial

    只要基本 url 与在应用程序控制台中注册的 URI 匹配,请求中也接受通配符 redirect_uri 值。一个注册的https://www.myboxapp.com的redirect_uri,如果传入请求redirect_uri参数,可以动态重定向到https://www.myboxapp.com/user1234

    对于您的第二个问题,John 是对的 - Box 在使用刷新令牌后使其无效。虽然这可能很烦人,但它也更安全。

    【讨论】:

      猜你喜欢
      • 2013-10-12
      • 2016-08-03
      • 1970-01-01
      • 2020-07-04
      • 2013-09-13
      • 2017-04-20
      • 1970-01-01
      • 2017-12-13
      • 2012-07-21
      相关资源
      最近更新 更多