You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何引导未登录域内Workspace账号的用户跳转登录访问Apps Script Web App

解决方案

方案1:在Web App代码中手动验证身份并智能重定向

默认的“仅域内用户可查看”设置会直接拦截非域用户,无法自定义跳转逻辑,你可以调整Web App权限并通过代码控制访问:

  1. 修改Web App发布设置

    • 重新发布Web App,将「谁可以访问此应用」改为任何人(甚至匿名),「执行应用的身份」保持以我身份执行。
  2. 添加身份验证与重定向逻辑
    在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 06:34:53