如何认证Google Apps Script Web App的/dev URL?部署后RESTful GET遇问题
解决Google Apps Script Web App的GET请求与/dev URL认证问题
首先,先明确你提到的第二个未完整显示的链接——那应该是**/dev URL**,它是Google Apps Script Web App的开发版本入口,和/exec URL的核心区别在于:
/exec是生产版本,部署后代码固定,你已经设置了“以我身份执行”+“任何人可访问”,所以无需认证就能访问,这也是你用它没问题的原因;/dev是开发测试版本,会直接运行脚本的最新代码(不用重新部署新版本),但默认仅限部署该Web App的开发者账号访问,所以必须通过认证才能正常调用GET请求。
接下来详细说/dev URL的认证方法,分两种场景:
1. 手动在浏览器中访问/dev URL
直接在浏览器地址栏输入/dev URL,页面会自动跳转到Google账号登录界面,使用你部署Web App时的账号登录后,就能正常访问并测试GET请求了。这是最简单的手动测试方式。
2. 通过代码/脚本发送GET请求到/dev URL
如果是用程序(比如Python、JavaScript等)调用/dev的RESTful GET请求,需要携带OAuth 2.0令牌进行认证,具体步骤如下:
- 获取OAuth令牌:
- 如果你是在同一个Google Apps Script项目中调用
/devURL,可以直接用ScriptApp.getOAuthToken()获取当前脚本的有效令牌; - 如果是外部程序调用,需要在Google Cloud Console中创建OAuth 2.0客户端凭据,获取令牌(注意要添加
https://www.googleapis.com/auth/script.webapp.deploy等相关权限)。
- 如果你是在同一个Google Apps Script项目中调用
- 携带令牌发送请求:
在GET请求的请求头中添加Authorization字段,格式为:
比如用JavaScript的fetch API示例:Authorization: Bearer YOUR_OAUTH_TOKENconst token = "你的OAuth令牌"; fetch("你的/dev URL", { method: "GET", headers: { "Authorization": `Bearer ${token}` } }) .then(response => response.text()) .then(data => console.log(data));
另外,如果你在使用/dev URL时遇到GET请求失败,大概率是因为没有正确携带认证信息,按照上面的方法配置后应该就能解决问题。
内容的提问来源于stack exchange,提问作者Martin Bramwell




