gpt4 book ai didi

google-apps-script - 适用于多个用户的 Google Script OAuth

转载 作者:行者123 更新时间:2023-12-04 05:22:59 27 4
gpt4 key购买 nike

我创建了一个处理 2 个不同 OAuth 连接的 Google App 脚本。

1- Google 本身代表用户发送邮件并访问 google docs(google api 控制台用于获取 key , secret )

2- gtraxapp 是一个基于云的时间表应用程序。 (脚本已注册,获得 key / secret 等)

脚本作为网络应用程序发布。它非常适合我的用户。

当登录不同的用户名时,我可以在不提供不同的 key / secret 的情况下授权 Google OAuth,并且电子邮件将从实际用户发送。

第二个应用程序 (gTrax) 出现问题。授权似乎有效。运行脚本内的功能以授权导致屏幕请求许可,然后 gtrax 作为已注册的应用程序出现在帐户中(如果需要,可以撤销访问权限)。但是,在运行应用程序时,我收到一条消息,说我需要权限才能执行此操作 (UrlFetchApp/simple get)

我的问题是:

这可能是我需要注册每个用户以获得每个人的 key / secret (并在脚本中处理它)......还是可以使用 1 个 key / secret 注册 OAuth?

换句话说,是(应该)将 key / secret 链接到单个用户,还是它们只是一种类似 RSA 的 key 对,经过验证后,可用于授权任何用户。

最佳答案

我的理解是这样的。当您使用内置的 Apps 脚本功能时,例如 MailApp.sendEmail,Google Apps 脚本“环境”会负责为用户请求授权(他第一次访问您的应用程序)并保存和为您管理 oAuth token ,以便一切顺利运行。

当您使用 UrlFetchApp 调用外部服务时,Apps 脚本 oAuth 授权过程的工作方式不同。当您实际进行 fetch 调用时,授权只是您在脚本编辑器上获得的一个奇怪的弹出窗口。它不会在“编译时”进行处理,并且会在您运行任何其他服务之前询问。但是您也只执行此步骤一次。“陷阱”是当用户将应用程序作为网络应用程序运行时,这种不同的授权过程不起作用。据我所知,它只能从脚本编辑器本身运行或直接从电子表格运行。

如果您的用户只是少数已知用户,您可以建议每个人打开脚本编辑器(或包含它的电子表格)并运行一个特定函数,该函数将尝试调用 UrlFetchApp.fetch所以弹出窗口出现并且他们授权它。一旦完成这一步,他们就可以正常使用webapp了。之后,Apps 脚本将为您施展魔法。

但是,如果您打算广泛共享此内容,比如在 Chrome 网上应用店,并且不想要求每个用户执行这个有点奇怪的步骤,那么您将需要自己管理所有授权过程。这意味着,您必须向第三方服务注册您的应用(如果是 Google 的,则在 API 控制台),您将在其中收到一个client id 和一个client secret。对于那些,您必须在您的应用程序 html 上放置一个“授权”提交按钮,它将用户重定向到第 3 方授权 url,提供正确的范围等。当他们授权时,第 3 方会将用户重定向回来到您的应用程序,提供一个 code 标记作为 URL 参数。您将使用此 code 调用第 3 方 oAuth 服务以获取您必须使用的真正的 access 和可能的 refresh token 在您的 UrlFetch 调用中。您将负责保存这些 token ,在它们过期时刷新它们等等。不是一个非常简单的过程:-/

哦,虽然您的应用只有一个 idsecret,但 token 是针对每个用户的。这是有道理的,因为您所做的每个调用都必须代表特定用户,并且他*必须*已经授权。

希望对您有所帮助。

关于google-apps-script - 适用于多个用户的 Google Script OAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504678/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com