【问题标题】:Trello OAuth only working with one Google Apps ScriptTrello OAuth 仅适用于一个 Google Apps 脚本
【发布时间】:2020-04-27 23:39:56
【问题描述】:

背景

  • 我可以通过 Google Apps 脚本创建 Trello 卡片 使用 OAuth 1.0 库的 Trello API。原理已验证/代码 有效。
  • 我有两个不同的 Google Apps 脚本项目需要能够创建 Trello 卡片。
  • 两个不同的 Apps 脚本/项目中的代码是相同的 - 包括相同的 API 密钥/秘密。
  • 只有一个 Apps 脚本可以创建 Trello 卡片。这是我的问题。
  • 如果我重新授权其他 Apps 脚本,该脚本将起作用,而另一个将给我返回“无效令牌”的 API,反之亦然。一次只能工作一个,但我需要同时工作。

我的想法

  • 我认为 Trello 通过 OAuth 看到每个 Apps 脚本都是它自己独特的项目。
  • 我认为因此它不会让两个应用程序使用相同的 API 密钥/秘密来处理我的 Trello 帐户。似乎只有一个项目能够使用密钥/秘密。
  • 如果是这种情况,我不知道如何让每个 Apps 脚本成为自己的项目,以便 Trello API 同时为两者工作。

需要帮助

有谁知道如何进行这项工作?我需要这两个脚本才能创建 Trello 卡片。我有一种感觉,每个应用程序都需要唯一标识自己,但老实说我不知道​​。

【问题讨论】:

    标签: api google-apps-script oauth trello


    【解决方案1】:

    这确实是一个 OAuth 逻辑问题,它是一项功能,而不是错误。在 OAuth 中,您的应用程序将刷新令牌交换为访问令牌。访问令牌只有有限的寿命。

    当您使用刷新令牌生成新的访问令牌时,您还会获得一个新的唯一刷新令牌,并且您的脚本会存储此令牌以供将来使用,旧的刷新令牌不再有效。同样,当您重新授权应用程序时,您会获得新的令牌,而之前生成的任何令牌都将变为无效。

    因此,当您使用与另一个脚本相同的客户端 ID 和客户端密码授权一个脚本时,您将获得一个新的访问令牌和刷新令牌,而另一个脚本存储的旧凭据将变得无效。

    因此,其他脚本无法再将其存储的刷新令牌交换为新的访问令牌,并且不再有效。重新授权此副本后,另一个副本中的刷新令牌和访问令牌以相同的方式失效。所以你最终会绕圈子。

    你有两个选择:

    • 为每个脚本设置一个单独的 OAuth 客户端(具有不同的客户端 ID 和客户端密码)。

    • 修改您的脚本,为 OAuth 访问令牌和密钥使用相同的存储位置。

    第一种方法将为您提供最可靠的一致结果。如果您尝试第二种方法,您仍然可能会遇到脚本同时运行的情况,其中一个具有有效令牌,而另一个尝试使用现在无效的令牌。 (比赛条件)。

    【讨论】:

      猜你喜欢
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 2017-03-31
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      相关资源
      最近更新 更多