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

能否使用Google Apps Script作为Bitrix24 OAuth2.0回调URL

可行性结论

完全可行,Google Apps Script(简称GAS)部署的Web应用完全可以作为Bitrix24 OAuth2.0流程的回调接收端,不存在技术层面的硬限制,这套方案已经在多个实际集成场景中验证过可用。

具体实现步骤
  • 第一步:部署GAS Web应用并获取回调地址
    新建GAS项目后点击右上角「部署」-「新建部署」,部署类型选择「Web应用」,配置项按以下要求选择:
    • 执行身份:选择「以我自己的身份执行」
    • 访问权限:选择「任何人」(注意:必须选这个选项,否则Bitrix24授权服务器跳转时会触发Google账号登录校验,无法正常传递授权参数)
      部署完成后复制生成的以/exec结尾的URL,这就是你的OAuth回调地址,不要用开发调试阶段生成的/dev结尾地址,该地址仅对你本人的Google账号开放访问,无法作为公开回调地址使用。
  • 第二步:在Bitrix24侧配置回调白名单
    进入你自己的Bitrix24站点的集成应用配置页,把上一步拿到的GAS Web应用URL添加到允许的回调地址列表中,Bitrix24会严格校验回调地址的完全匹配,不要在地址后追加多余路径或参数。
  • 第三步:编写回调处理逻辑
    GAS Web应用的doGet(e)入口函数会自动接收Bitrix24授权完成后跳转携带的所有URL参数,授权码code、自定义传参state都可以从e.parameter对象中直接读取。拿到授权码后,直接在GAS服务端构造请求向Bitrix24令牌端点换取access_token和refresh_token即可,令牌建议存储在PropertiesService中,不要回传到前端避免泄露。
    最小可运行的代码示例如下:
    const BITRIX_BASE_URL = "替换为你自己的Bitrix24站点地址";
    const CLIENT_ID = "替换为你的应用Client ID";
    const CLIENT_SECRET = "替换为你的应用Client Secret";
    
    function doGet(e) {
      const currentCallbackUrl = ScriptApp.getService().getUrl();
      // 识别为Bitrix24授权回调请求
      if (e.parameter.code) {
        // 用授权码换取访问令牌
        const tokenResp = UrlFetchApp.fetch(`${BITRIX_BASE_URL}/oauth/token/`, {
          method: "POST",
          payload: {
            grant_type: "authorization_code",
            client_id: CLIENT_ID,
            client_secret: CLIENT_SECRET,
            code: e.parameter.code,
            redirect_uri: currentCallbackUrl
          }
        });
        const tokenInfo = JSON.parse(tokenResp.getContentText());
        // 持久化存储令牌信息
        PropertiesService.getScriptProperties().setProperties({
          access_token: tokenInfo.access_token,
          refresh_token: tokenInfo.refresh_token,
          expires_at: Date.now() + tokenInfo.expires_in * 1000
        });
        return ContentService.createTextOutput("Bitrix24授权完成,可关闭当前页面");
      } 
      // 非回调请求,生成授权跳转链接
      else {
        const authUrl = `${BITRIX_BASE_URL}/oauth/authorize/?client_id=${CLIENT_ID}&redirect_uri=${encodeURIComponent(currentCallbackUrl)}&response_type=code`;
        return HtmlService.createHtmlOutput(`<a href="${authUrl}">点击跳转至Bitrix24完成授权</a>`);
      }
    }
    
  • 第四步:补充令牌自动刷新逻辑
    Bitrix24的access_token有效期较短,后续调用Bitrix24 API前先校验令牌是否过期,过期时用提前存储的refresh_token换发新令牌即可,不需要重复走手动授权流程。
常见踩坑说明
  • GAS Web应用不支持自定义子路径路由,所有请求都会打到根路径,所以回调地址直接填部署生成的/exec根地址即可,不要尝试追加子路径,会直接返回404。
  • 每次重新部署Web应用如果生成了新的/exec地址,必须同步更新Bitrix24侧配置的回调白名单,否则会触发回调地址不匹配的授权错误。
  • 不要在GAS前端页面(HTML模板里)硬编码client_secret,所有令牌换取、API调用逻辑都要在服务端函数里执行,避免凭证泄露。

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:12:43