如何缩小 auth/drive 应用程序脚本的 auth/drive 范围?
How to narrow down the auth/drive scope for a google apps script?
我构建了一个 google apps 脚本 Web 应用程序。对于 Google Drive 相关功能,应用程序需要 auth/drive.install
(与 Drive UI 集成)和 auth/drive.file
(在相关文件属性中存储与文件关联的一些数据)范围.其他范围是 auth/urlshortener
、auth/userinfo.email
和 auth/userinfo.profile
。据我了解,后两者是身份验证所必需的。
以上范围在应用内的 oauth dance 中指定。但是,在安装应用程序时,会向用户显示以下范围:
- 查看和管理您的 Google 驱动器中的文件(对应于
auth/drive scope
)
- 管理您的 goo.gl 短网址 (
auth/urlshortener
)
- 和其他三个对应
auth/script_*
范围
这与脚本属性的范围相关。
5 OAuth Scopes required by the script:
https: //www.googleapis.com/auth/drive
https: //www.googleapis.com/auth/script.external_request
https: //www.googleapis.com/auth/script.scriptapp
https: //www.googleapis.com/auth/script.storage
https: //www.googleapis.com/auth/urlshortener
显然,auth/drive
和 auth/urlshortner
是由于高级 Google 服务使用而添加的,它们在两个 GAS IDE 中都已打开(资源 > 高级 Google 服务)和开发者控制台。
GAS IDE 不允许指定任何比例如更窄的范围auth/drive
。
Google 出于某种原因,开发者控制台中的 Apps Marketplace SDK 配置不允许添加任何特定范围。实际上,它允许添加但不保存任何内容。
问题:
最近 Google 为请求敏感 OAuth 范围的 OAuth 客户端引入了审查程序,auth/drive
绝对是其中之一。
我不需要整个 auth/drive
范围,也不希望用户看到这样的内容:
This app ins't verified
有没有办法通过 GAS IDE 或开发者控制台缩小 drive
范围?
脚本本身不使用任何 auth/script_*
功能。由于我使用 node google apps 脚本模块进行开发,因此以某种方式隐式添加了这些内容。我不需要用户的许可。如何摆脱它?
有什么解决方法吗?
我自己处理这个。
我发现 Google 中的以下参考资料很有帮助
https://developers.google.com/apps-script/concepts/scopes("Setting explicit scopes" 选项)
和 https://developers.google.com/apps-script/concepts/manifests
总结:
您必须编辑 appsscript.json 清单文件。默认情况下,这在您的文件列表中是不可见的。点击菜单 "View"->"Show manifest file" 即可。
然后将 "oauthScopes" 部分添加到清单中,其中包含一个数组,其中包含您在 "Scopes" 选项卡中的菜单 "File"->"Project properties" 下找到的范围(当然使它成为一个合适的 json 数组)。减少多余的范围 and/or 换成不太宽松的范围(只读而不是完全访问等)。
选择的答案很好,但在我的用例中不起作用:从电子表格中读取数据。我找到了另一个解决方案:
https://developers.google.com/apps-script/guides/services/authorization#manual_authorization_scopes_for_sheets_docs_slides_and_forms
将其放在主脚本文件的顶部(Code.gs 或其他):
/**
* @OnlyCurrentDoc
*/
在此之后您不需要进入清单等,但您仍然可以将其放入清单中以保密:
"oauthScopes": ["https://www.googleapis.com/auth/spreadsheets.currentonly"]
为什么 oauthScopes - 只读方式对我不起作用
我的脚本只从电子表格中读取数据。我正在使用这个功能:
SpreadsheetApp.getActiveSpreadsheet()
当我按照所选答案中的建议放置只读范围时,我在应用程序页面上收到一条错误消息,指出该功能无法与只读范围一起使用,它需要完全访问权限。最重要的是,当首次用户启动应用程序时,在实际的权限获取屏幕之前有一个可怕的危险页面,表明该应用程序尚未通过 google 验证并给出蓝色 "take me back to safety"按钮。这肯定会吓跑大多数用户!要通过,用户必须单击左下角的小文本 link,这不是很直观。在没有授权范围的情况下,同样的警报也早先出现了;它仍然存在,因为该应用程序仍在征求用户的许可以阅读其所有 google 电子表格。 (所以基本上 oauthScopes
没有解决我的问题,并导致我的应用程序出错)
但是当我将那些 @OnlyCurrentDoc
行放在代码顶部而不是执行 oauthScopes 时,脚本放弃了尝试访问用户的 一切 ,现在甚至可怕的 "unverified" 页面也不见了。我只需要确保用户具有对原始电子表格的读取权限,并且应用程序 link 以更少侵入性的权限为他们工作 - 询问:参见此屏幕截图:
而且无论如何它都无法编辑原始电子表格,因为用户的凭据只有读取权限。
附加提示:发布设置:
以以下身份执行应用程序:访问网络应用程序的用户
谁有权访问该应用程序:任何人
意思是:当用户访问应用程序的 URL 时,他们将需要使用自己的登录凭据,而不是您的。只有当他们的帐户已被授予对基础数据的访问权限时,该应用程序才会为他们工作。
我构建了一个 google apps 脚本 Web 应用程序。对于 Google Drive 相关功能,应用程序需要 auth/drive.install
(与 Drive UI 集成)和 auth/drive.file
(在相关文件属性中存储与文件关联的一些数据)范围.其他范围是 auth/urlshortener
、auth/userinfo.email
和 auth/userinfo.profile
。据我了解,后两者是身份验证所必需的。
以上范围在应用内的 oauth dance 中指定。但是,在安装应用程序时,会向用户显示以下范围:
- 查看和管理您的 Google 驱动器中的文件(对应于
auth/drive scope
) - 管理您的 goo.gl 短网址 (
auth/urlshortener
) - 和其他三个对应
auth/script_*
范围
这与脚本属性的范围相关。
5 OAuth Scopes required by the script:
https: //www.googleapis.com/auth/drive
https: //www.googleapis.com/auth/script.external_request
https: //www.googleapis.com/auth/script.scriptapp
https: //www.googleapis.com/auth/script.storage
https: //www.googleapis.com/auth/urlshortener
显然,auth/drive
和 auth/urlshortner
是由于高级 Google 服务使用而添加的,它们在两个 GAS IDE 中都已打开(资源 > 高级 Google 服务)和开发者控制台。
GAS IDE 不允许指定任何比例如更窄的范围auth/drive
。
Google 出于某种原因,开发者控制台中的 Apps Marketplace SDK 配置不允许添加任何特定范围。实际上,它允许添加但不保存任何内容。
问题:
最近 Google 为请求敏感 OAuth 范围的 OAuth 客户端引入了审查程序,auth/drive
绝对是其中之一。
我不需要整个 auth/drive
范围,也不希望用户看到这样的内容:
This app ins't verified
有没有办法通过 GAS IDE 或开发者控制台缩小 drive
范围?
脚本本身不使用任何 auth/script_*
功能。由于我使用 node google apps 脚本模块进行开发,因此以某种方式隐式添加了这些内容。我不需要用户的许可。如何摆脱它?
有什么解决方法吗?
我自己处理这个。
我发现 Google 中的以下参考资料很有帮助 https://developers.google.com/apps-script/concepts/scopes("Setting explicit scopes" 选项) 和 https://developers.google.com/apps-script/concepts/manifests
总结: 您必须编辑 appsscript.json 清单文件。默认情况下,这在您的文件列表中是不可见的。点击菜单 "View"->"Show manifest file" 即可。
然后将 "oauthScopes" 部分添加到清单中,其中包含一个数组,其中包含您在 "Scopes" 选项卡中的菜单 "File"->"Project properties" 下找到的范围(当然使它成为一个合适的 json 数组)。减少多余的范围 and/or 换成不太宽松的范围(只读而不是完全访问等)。
选择的答案很好,但在我的用例中不起作用:从电子表格中读取数据。我找到了另一个解决方案:
https://developers.google.com/apps-script/guides/services/authorization#manual_authorization_scopes_for_sheets_docs_slides_and_forms
将其放在主脚本文件的顶部(Code.gs 或其他):
/**
* @OnlyCurrentDoc
*/
在此之后您不需要进入清单等,但您仍然可以将其放入清单中以保密:
"oauthScopes": ["https://www.googleapis.com/auth/spreadsheets.currentonly"]
为什么 oauthScopes - 只读方式对我不起作用
我的脚本只从电子表格中读取数据。我正在使用这个功能:
SpreadsheetApp.getActiveSpreadsheet()
当我按照所选答案中的建议放置只读范围时,我在应用程序页面上收到一条错误消息,指出该功能无法与只读范围一起使用,它需要完全访问权限。最重要的是,当首次用户启动应用程序时,在实际的权限获取屏幕之前有一个可怕的危险页面,表明该应用程序尚未通过 google 验证并给出蓝色 "take me back to safety"按钮。这肯定会吓跑大多数用户!要通过,用户必须单击左下角的小文本 link,这不是很直观。在没有授权范围的情况下,同样的警报也早先出现了;它仍然存在,因为该应用程序仍在征求用户的许可以阅读其所有 google 电子表格。 (所以基本上 oauthScopes
没有解决我的问题,并导致我的应用程序出错)
但是当我将那些 @OnlyCurrentDoc
行放在代码顶部而不是执行 oauthScopes 时,脚本放弃了尝试访问用户的 一切 ,现在甚至可怕的 "unverified" 页面也不见了。我只需要确保用户具有对原始电子表格的读取权限,并且应用程序 link 以更少侵入性的权限为他们工作 - 询问:参见此屏幕截图:
而且无论如何它都无法编辑原始电子表格,因为用户的凭据只有读取权限。
附加提示:发布设置:
以以下身份执行应用程序:访问网络应用程序的用户
谁有权访问该应用程序:任何人
意思是:当用户访问应用程序的 URL 时,他们将需要使用自己的登录凭据,而不是您的。只有当他们的帐户已被授予对基础数据的访问权限时,该应用程序才会为他们工作。