如何与其他Google Cloud项目共享Google Apps脚本插件的Google API授权?

时间:2018-04-27 18:42:14

标签: google-apps-script google-api google-cloud-platform google-oauth2 google-apps-script-addon

系统组件

  • Published Google Apps Script add-on"附加组件" )以及published on the G Suite marketplace for domain-wide installation
    • 仍在其原始GCP项目 P1
    • 具有在创建脚本时自动生成的OAuth2客户端ID
  • Google Cloud中的网络应用程序(" web-app" ),出于配额原因,最好是在单独的项目中 P2 (但是相同的所有者和与附加组件项目相同的组织。它正在取代具有相同功能的Web应用程序,该功能一直是附加组件的一部分。

client-secrets-addon.json 如下所示:

{"web":{
"client_id": "57...1t.apps.googleusercontent.com",
"project_id": "project-id-95...70",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url":
"https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "K2...y1",
"redirect_uris": ["https://script.google.com/oauthcallback"]
}}

所有者无权向其添加不同的重定向URI。显然是特定于任何Apps脚本项目的默认客户端的安全约束。看来,我们不能仅通过新的 web-app 使用相同的客户端ID。

用例

资源所有者的附加安装

G Suite管理员或资源所有者为Google云端硬盘中的文件安装插件。在安装过程中,用户会看到OAUTH2同意屏幕,以向Google云端硬盘和其他一些Google API范围(包括离线访问)授予必要的范围。

触发附加组件

虽然没有Google帐户的用户可以使用Google云端硬盘中的资源所有者文件(文件),但插件被触发。 加载项是"以我"执行。 (脚本所有者)。 加载项代表资源所有者向其他用户发送通知。

用户回复通知

收到通知后,系统会将用户(非Google帐户)定向到网络应用以执行某些操作。因此, web-app 再次需要访问文件

问题

  1. web-app 早先在与加载项相同的脚本中实现。有许多资源所有者和已经授予范围的管理员,我们不想破坏插件,因为新的缺少范围> web应用

  2. 由于 web-app 访问文件资源所有者不存在, > web-app 在安装过程中需要像附加组件那样的范围。

  3. 要求

    1. 如果在附加组件安装期间只有一个授权要为资源所有者完成,那么最佳用户体验将会是

    2. 现有资源所有者无需在新的网络应用中重复授权,以避免中断。

    3. 在Google帐户的具有访问权限的应用列表中,将加载项 web-app 显示为一个应用,并且肯定会撤消访问权限撤销两个组件的访问权限。

    4. 如果是满足这些要求的唯一选择,我们会考虑在与加载项相同的项目中托管 web-app

    5. 分享已经完成的加载项的Google API授权的最佳方法是什么,以便新的 web-app 可以使用它们?

0 个答案:

没有答案