Trello OAuth 仅使用一个 Google Apps 脚本
Trello OAuth only working with one Google Apps Script
背景
- 我可以通过 Google Apps 脚本创建 Trello 卡片
Trello API 使用 OAuth 1.0 库。原则是proven/code
有效。
- 我有两个不同的 Google Apps 脚本项目需要能够创建 Trello 卡片。
- 两个不同应用程序中的代码 Scripts/Projects 相同 - 包括相同的 API key/secret.
- 只有一个 Apps 脚本会创建 Trello 卡片。 这是我的问题。
- 如果我重新授权另一个 Apps 脚本,该脚本将起作用,另一个将给我 API return 或 "invalid token",反之亦然。一次只有一个工作,但我需要两个都工作。
我的想法
- 我认为 Trello 通过 OAuth 将每个 Apps 脚本视为其自己独特的项目。
- 我认为正因为如此,它不会让两个应用程序使用相同的 API key/secret 来使用我的 Trello 帐户。似乎只有一个项目能够使用 key/secret.
- 如果是这种情况,我不知道如何让每个 Apps 脚本成为自己的项目,以便 Trello API 同时为两者工作。
需要帮助
有谁知道如何进行这项工作?我需要这两个脚本才能创建 Trello 卡片。我觉得每个应用程序都需要唯一标识自己,但老实说我不知道。
这确实是一个 OAuth 逻辑问题,它是一个功能,而不是错误。在 OAuth 中,您的应用程序将刷新令牌交换为访问令牌。访问令牌只有有限的生命周期。
当您使用刷新令牌生成新的访问令牌时,您还会获得一个新的唯一刷新令牌并且您的脚本存储它以供将来使用,旧的刷新令牌不再有效。同样,当您重新授权应用程序时,您会获得新的令牌,并且之前生成的任何令牌都将无效。
因此,当您使用与另一个脚本相同的客户端 ID 和客户端密码授权一个脚本时,您将获得一个新的访问令牌和刷新令牌,而另一个脚本存储的旧凭据将变得无效。
因此,其他脚本无法再将其存储的刷新令牌交换为新的访问令牌,因此它不再有效。一旦你重新授权这个副本,另一个副本中的刷新令牌和访问令牌将以同样的方式失效。所以你最终会绕圈子。
您有两个选择:
为每个脚本设置一个单独的 OAuth 客户端(具有不同的客户端 ID 和客户端密码)。
修改您的脚本以对 OAuth 访问令牌和机密使用相同的存储位置。
第一种方法将为您提供最可靠的一致结果。如果您尝试第二种方法,您仍然可能会遇到脚本 运行 同时出现的情况,其中一个具有有效标记,而另一个尝试使用现在无效的标记。 (竞争条件)。
背景
- 我可以通过 Google Apps 脚本创建 Trello 卡片 Trello API 使用 OAuth 1.0 库。原则是proven/code 有效。
- 我有两个不同的 Google Apps 脚本项目需要能够创建 Trello 卡片。
- 两个不同应用程序中的代码 Scripts/Projects 相同 - 包括相同的 API key/secret.
- 只有一个 Apps 脚本会创建 Trello 卡片。 这是我的问题。
- 如果我重新授权另一个 Apps 脚本,该脚本将起作用,另一个将给我 API return 或 "invalid token",反之亦然。一次只有一个工作,但我需要两个都工作。
我的想法
- 我认为 Trello 通过 OAuth 将每个 Apps 脚本视为其自己独特的项目。
- 我认为正因为如此,它不会让两个应用程序使用相同的 API key/secret 来使用我的 Trello 帐户。似乎只有一个项目能够使用 key/secret.
- 如果是这种情况,我不知道如何让每个 Apps 脚本成为自己的项目,以便 Trello API 同时为两者工作。
需要帮助
有谁知道如何进行这项工作?我需要这两个脚本才能创建 Trello 卡片。我觉得每个应用程序都需要唯一标识自己,但老实说我不知道。
这确实是一个 OAuth 逻辑问题,它是一个功能,而不是错误。在 OAuth 中,您的应用程序将刷新令牌交换为访问令牌。访问令牌只有有限的生命周期。
当您使用刷新令牌生成新的访问令牌时,您还会获得一个新的唯一刷新令牌并且您的脚本存储它以供将来使用,旧的刷新令牌不再有效。同样,当您重新授权应用程序时,您会获得新的令牌,并且之前生成的任何令牌都将无效。
因此,当您使用与另一个脚本相同的客户端 ID 和客户端密码授权一个脚本时,您将获得一个新的访问令牌和刷新令牌,而另一个脚本存储的旧凭据将变得无效。
因此,其他脚本无法再将其存储的刷新令牌交换为新的访问令牌,因此它不再有效。一旦你重新授权这个副本,另一个副本中的刷新令牌和访问令牌将以同样的方式失效。所以你最终会绕圈子。
您有两个选择:
为每个脚本设置一个单独的 OAuth 客户端(具有不同的客户端 ID 和客户端密码)。
修改您的脚本以对 OAuth 访问令牌和机密使用相同的存储位置。
第一种方法将为您提供最可靠的一致结果。如果您尝试第二种方法,您仍然可能会遇到脚本 运行 同时出现的情况,其中一个具有有效标记,而另一个尝试使用现在无效的标记。 (竞争条件)。