Google Picker作为库调用时其他用户报Authorization is required错误
问题根因&修复步骤
1. 修复外层脚本的基础错误
你当前外层的getOAuthToken函数没有配置返回值,所以前端调用时拿到的自然是undefined,先修改外层代码:
function getOAuthToken() { return lib_.getOAuthToken(); // 新增return关键字返回库函数的执行结果 }
2. 显式声明外层脚本的授权作用域
Apps Script的授权是针对外层容器脚本(绑定到Sheet的脚本)生效的,不需要用户单独给库授权,只要外层脚本声明了库需要的所有权限,用户给外层授权后库就可以直接继承使用。
操作步骤:
- 打开外层脚本,点击「项目设置」,勾选「在编辑器中显示appsscript.json清单文件」
- 回到编辑器打开appsscript.json,替换为如下配置:
{ "timeZone": "Asia/Shanghai", "dependencies": { "libraries": [ { "userSymbol": "lib_", "libraryId": "你的库的Script ID", "version": "你的库的发布版本号" } ] }, "exceptionLogging": "STACKDRIVER", "runtimeVersion": "V8", "oauthScopes": [ "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/spreadsheets.currentonly", "https://www.googleapis.com/auth/script.container.ui" ] }
3. 调整库的访问权限
不需要给用户开放库的编辑/查看权限,只要把库的共享权限设置为「知道链接的任何人都可以查看」即可,库代码运行时的权限完全由外层脚本的授权决定。
4. 补充配置校验
注意库中picker.html里的{DEVELOPER_KEY}需要替换为你GCP项目中生成的Google Picker API公开密钥,且该密钥需要配置允许所有Referer或者Google Sheets的域名访问。
你当前场景不需要部署Web App,也不需要接入第三方OAuth2库,走Apps Script原生授权流程即可:用户第一次点击菜单的「Select Folders」选项时,会触发外层脚本的授权弹窗,完成授权后就能正常拿到OAuthToken加载Picker。
内容的提问来源于stack exchange,提问作者BinaryChaosTV
相关产品推荐
相关产品推荐

