如何将OAuth 2.0与带有静态重定向网址的Google Apps脚本库一起使用?

时间:2017-01-15 23:47:48

标签: google-apps-script oauth oauth-2.0 asana-api asana-connect

我无法弄清楚如何制作使用OAuth 2.0的共享 Google Apps脚本库。

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

是否有办法始终使用相同的重定向网址进行身份验证,以便可以在任何脚本中使用我制作的库,而无需在Asana中注册新的重定向网址?

1 个答案:

答案 0 :(得分:0)

我是Asana的开发者倡导者。如果我正确理解你的问题,那么是的,你必须分别为每个脚本处理回调。出于安全原因,我们验证OAuth应用程序注册是否注册相同的 URL,因为集成在进行身份验证时实际请求。例如,如果这不是真的,则可以创建使用合法脚本中的client_id的恶意脚本,但要求重定向转到其自己的凭据获取端点。如果在应用程序注册中获得client_id的应用程序也精确指定了哪个端点应该是重定向到的合法端点,则会解决此问题。这意味着每个OAuth应用都需要拥有自己唯一且一致的重定向网址:(

我想你可能会创建一个单一的路由器" Google Apps脚本会在点击Asana的oauth_authorize endpoint时将state参数设置为一些用户/脚本对,并将用户凭据转发到基于该用户的路由器脚本后面的脚本响应回来时/脚本对,但它不是超级琐碎的。

最后一个选项是使用Personal Access Token访问Asana的API。这个令牌可以由无限数量的脚本用于访问。缺点是这个令牌"看起来像你",也就是说,它代表的不是第三方用户,而是你自己 - 你的脚本将是用户的个人访问令牌的自动版本使用。这可以通过创建一个"僵尸账户来减轻某种程度的影响。访问我们的API并让它在Asana内部访问您想要收集数据的项目或团队。这种方法的另一个缺点是,如果您撤销了一个令牌,那么使用个人访问令牌的每个脚本都会中断,因此,如果这种情况通过意图或意外发生,您将不得不更新个人访问令牌信息在每个使用它的脚本中。

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