如何使用带有静态重定向 URL 的 Google Apps 脚本库的 OAuth 2.0?

How to use OAuth 2.0 with a Google Apps Script library, with a static redirect URL?

我不知道如何制作 共享 Google Apps 脚本库,它使用 OAuth 2.0。

问题是 usercallback 重定向 URL 更改,每次我在不同的脚本中使用该库。但是,这意味着我需要为我在其中使用该脚本的每个电子表格添加一个新的应用程序和白名单重定向 URL 到 Asana。我正在使用 https://github.com/googlesamples/apps-script-oauth2.

有没有办法始终使用相同的重定向 URL 进行身份验证,以便可以在任何脚本中使用我创建的库,而无需在 Asana 中注册新的重定向 URL?

我是 Asana 的一名开发倡导者。如果我正确理解你的问题,那么是的,你必须为每个脚本单独处理回调。出于安全原因,我们验证 OAuth 应用程序注册注册 相同 url 作为集成在身份验证时实际请求。例如,如果这不是真的,则可能会创建一个恶意脚本,该脚本使用来自合法脚本的 client_id,但要求重定向到它自己的 credential-grabbing 端点。如果在应用程序注册时获得 client_id 的应用程序还准确指定了哪个端点应该是要重定向到的合法端点,则此问题已解决。这意味着每个 OAuth 应用程序都需要有自己独特且一致的重定向 URL :(

我想你可以创建一个 "router" Google Apps 脚本,当点击 Asana 的 oauth_authorize endpoint 并在响应返回时根据 user/script 对将用户凭据转发到存在于路由器脚本后面的脚本,但这并非微不足道。

最后一个选择是使用 Personal Access Token 访问 Asana 的 API。这个令牌可以被无限数量的脚本用于访问。缺点是这个令牌 "looks like you",也就是说,它不是代表第三方用户而是代表你自己采取行动 - 你的脚本将是他们使用其个人访问令牌的用户的自动化版本。通过创建 "bot account" 来访问我们的 API 并允许它在 Asana 内部访问您想要收集数据的项目或团队,可以在一定程度上缓解这种情况。这种方法的另一个缺点是,如果您撤销一个令牌,每个使用个人访问令牌的脚本都会中断,因此如果这种情况发生是有意或无意的,您将必须更新每个脚本中的个人访问令牌信息使用它的脚本。

希望这有助于您评估选项并选择最适合您的脚本的选项。