如何引导未登录域内Workspace账号的用户跳转登录访问Apps Script Web App
解决方案
方案1:在Web App代码中手动验证身份并智能重定向
默认的“仅域内用户可查看”设置会直接拦截非域用户,无法自定义跳转逻辑,你可以调整Web App权限并通过代码控制访问:
修改Web App发布设置
- 重新发布Web App,将「谁可以访问此应用」改为任何人(甚至匿名),「执行应用的身份」保持以我身份执行。
添加身份验证与重定向逻辑
在doGet函数中检查访问用户的域名,根据结果返回内容或跳转到账号选择页:function doGet(e) { const allowedDomain = "mydomain.com"; const user = Session.getActiveUser(); const webAppUrl = ScriptApp.getService().getUrl(); // 验证用户是否为域内账号 if (user.getEmail().endsWith(`@${allowedDomain}`)) { // 返回你的Web App核心内容 return HtmlService.createHtmlOutputFromFile("index"); } else { // 构造智能重定向链接,避免强制重新授权 const redirectUrl = `https://accounts.google.com/AccountChooser?hd=${allowedDomain}&continue=${encodeURIComponent(webAppUrl)}&prompt=select_account`; return HtmlService.createHtmlOutput(`<script>window.location.href="${redirectUrl}";</script>`); } }关键说明:
prompt=select_account参数:如果用户已登录域内账号,会直接唤起账号选择框让用户切换;未登录则引导到域账号登录页,不会强制触发授权流程。Session.getActiveUser():获取当前访问用户的身份,即使Web App以你的身份执行,也能正确识别访问者的邮箱域名。
方案2:利用Google Workspace IdP配置(适合批量应用)
如果你的域内有多个Web App需要统一身份验证,可以通过Google Workspace管理员后台配置身份提供商(IdP)规则,强制访问特定URL时使用域账号登录。不过这个方案需要管理员权限,适合团队级别的统一管控。
内容的提问来源于stack exchange,提问作者xd1936
相关产品推荐
相关产品推荐

