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 再次需要访问文件。
web-app 早先在与加载项相同的脚本中实现。有许多资源所有者和已经授予范围的管理员,我们不想破坏插件,因为新的缺少范围> web应用
由于 web-app 访问文件时资源所有者不存在, > web-app 在安装过程中需要像附加组件那样的范围。
如果在附加组件安装期间只有一个授权要为资源所有者完成,那么最佳用户体验将会是
。现有资源所有者无需在新的网络应用中重复授权,以避免中断。
在Google帐户的具有访问权限的应用列表中,将加载项和 web-app 显示为一个应用,并且肯定会撤消访问权限撤销两个组件的访问权限。
如果是满足这些要求的唯一选择,我们会考虑在与加载项相同的项目中托管 web-app 。
分享已经完成的加载项的Google API授权的最佳方法是什么,以便新的 web-app 可以使用它们?