news 2026/9/15 12:57:10

自托管 SurfSense 如何配置一个 Google Cloud OAuth 应用启用 Drive、Gmail 与 Calendar 连接器?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自托管 SurfSense 如何配置一个 Google Cloud OAuth 应用启用 Drive、Gmail 与 Calendar 连接器?

自托管 SurfSense 如何配置一个 Google Cloud OAuth 应用启用 Drive、Gmail 与 Calendar 连接器?

【免费下载链接】SurfSenseOpen-source NotebookLM alternative. Research the open web with live data(Reddit, YT, IG, TikTok, Indeed, Google Search, Maps etc) through one platform, API or MCP server. Join our Discord: https://discord.gg/ejRNvftDp9项目地址: https://gitcode.com/GitHub_Trending/su/SurfSense

在自托管的 SurfSense 实例上,Google Drive、Gmail 与 Google Calendar 三个连接器共用同一个 Google Cloud OAuth 应用:在 Google Cloud 控制台创建项目、启用对应 API、配置 OAuth 同意屏幕与客户端,再把 Client ID / Client Secret 和每个连接器的重定向 URI 写进 SurfSense 的.env,重启后三个连接器即可被工作区内所有用户连接。Drive 属于文件源,授权后文件出现在 Documents 侧边栏的Import菜单里,供你挑选并索引进知识库;Gmail 与 Calendar 则是 Agent 的实时工具,可搜索、读取、起草/发送邮件、搜索与管理日历事件。

这套配置只在自托管部署时需要。SurfSense Cloud 上这些连接已经配好,直接点Connect即可。

准备:确认部署方式与.env位置

重定向 URI 使用哪个地址取决于你的部署方式,这决定了 OAuth 客户端里要填哪一组 URI:

  • Docker 安装(默认公开地址http://localhost:3929,对应 compose 里LISTEN_HTTP_PORT的默认值 3929);
  • 手动安装使用后端地址(如http://localhost:8000);
  • 生产环境使用你的公开域名。

.env文件位置:用安装脚本部署时在./surfsense/.env,手动 clone 仓库部署时在docker/.env。仓库里的 docker/.env.example 内联注释了所有变量,本文后面的变量名均出自其中。

第一步:创建 Google Cloud 项目

打开 Google Cloud Console(console.cloud.google.com),选择一个已有项目或新建一个项目。

第二步:启用所需 API

进入APIs & Services>Library,搜索并启用:

  • People API(Google OAuth 本身必需,始终要启用);
  • Google Drive API(Drive 连接器);
  • Gmail API(Gmail 连接器);
  • Google Calendar API(Calendar 连接器)。

只启用你计划使用的连接器的 API 即可——People API 是唯一"始终必需"的一项。

第三步:配置 OAuth 同意屏幕

  1. 进入APIs & Services>OAuth consent screen
  2. 用户类型选择External(如果用的是 Google Workspace 则选 Internal)。
  3. 填写必填信息:App nameSurfSenseUser support emailDeveloper contact information填你的邮箱。
  4. Save and Continue
  5. Add or Remove Scopes,按下表添加范围:
Scope用途
openid.../auth/userinfo.email.../auth/userinfo.profile基础 OAuth(所有连接器共用)
https://www.googleapis.com/auth/driveDrive 连接器
https://www.googleapis.com/auth/gmail.modifyGmail 连接器
https://www.googleapis.com/auth/calendar.eventsCalendar 连接器

注意写权限范围(drivegmail.modifycalendar.events)是 Agent 能创建文件、发送邮件、管理事件的前提——文档说明这些写操作在聊天中始终会先征求你的确认。如果你只想要只读访问,改用drive.readonlygmail.readonlycalendar.readonly,但对应的写工具将不可用。

第四步:创建 OAuth 客户端并登记重定向 URI

  1. 进入APIs & Services>Credentials
  2. Create Credentials>OAuth client ID
  3. 应用类型选择Web application
  4. NameSurfSense
  5. Authorized redirect URIs下,为计划启用的每个连接器各加一个 URI。Docker 安装(http://localhost:3929)下完整的一组是:
http://localhost:3929/api/v1/auth/google/drive/connector/callback http://localhost:3929/api/v1/auth/google/gmail/connector/callback http://localhost:3929/api/v1/auth/google/calendar/connector/callback

手动安装把前缀换成后端地址http://localhost:8000,生产环境换成你的公开域名。

  1. Create,从确认对话框中复制Client IDClient Secret

第五步:把凭据写入 SurfSense 的.env

编辑你的.envsurfsense/.envdocker/.env)。按 docker/.env.example 的结构,Client ID 与 Secret 位于 "Google OAuth" 段,三个重定向 URI 位于 "Connector OAuth Keys" 段:

# Google OAuth GOOGLE_OAUTH_CLIENT_ID=<你的 Client ID> GOOGLE_OAUTH_CLIENT_SECRET=<你的 Client Secret> # Connector OAuth Keys GOOGLE_CALENDAR_REDIRECT_URI=http://localhost:3929/api/v1/auth/google/calendar/connector/callback GOOGLE_GMAIL_REDIRECT_URI=http://localhost:3929/api/v1/auth/google/gmail/connector/callback GOOGLE_DRIVE_REDIRECT_URI=http://localhost:3929/api/v1/auth/google/drive/connector/callback

两点说明:

  • 三个重定向 URI 的默认值与.env.example中的注释一致,即 Docker 部署下与第四步登记的 URI 相同;手动安装或生产环境需同步改为第四步骤中的地址。
  • 按 Google 连接器文档,同一组 Client ID 和 Secret 被 Google 登录与三个连接器共享,只需填一次。.env.example中该段注释标注 "only if AUTH_TYPE=GOOGLE",若你的实例登录模式不同,以.env.example中相应注释为准。
  • Client Secret 属于敏感凭据,不要公开分享。

重启并验证连接

修改.env后重启 SurfSense:

docker compose up -d

重启完成后三个 Google 连接器即处于可连接状态。按各自入口验证:

  • Gmail / Calendar:打开工作区的Connectors对话框,选择对应服务点Connect,完成 Google 授权后,连接卡片出现在Active标签页中,可看到实时状态;
  • Drive:它是文件源,不出现在连接器目录里。打开Documents侧边栏,点Import,选择 Google Drive,授权后浏览并勾选要导入的文件——文件被索引进知识库,与你的上传和笔记一起可被检索。

后续维护也在Connectors对话框中进行:token 过期时卡片会提示Reconnect重新授权;Disconnect会移除连接,对于 Drive 这类知识库连接器,断开时同时会删除它已索引的文档,操作前确认。

相关文档

  • Google 连接器完整设置
  • 外部连接器总览
  • docker/.env.example 变量定义

【免费下载链接】SurfSenseOpen-source NotebookLM alternative. Research the open web with live data(Reddit, YT, IG, TikTok, Indeed, Google Search, Maps etc) through one platform, API or MCP server. Join our Discord: https://discord.gg/ejRNvftDp9项目地址: https://gitcode.com/GitHub_Trending/su/SurfSense

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 12:56:33

TS类型工具实战:从Partial到infer,构建前端类型数据管道

前不久接了一个 Vue3 后台管理系统的活&#xff0c;项目里有几十个接口返回类型混乱&#xff0c;前端到处是any&#xff0c;改一个字段名要在五个文件里翻。后来我把接口返回类型统一抽出来&#xff0c;用 TS 的类型工具做了一层“派生”&#xff0c;半小时改完&#xff0c;编辑…

作者头像 李华
网站建设 2026/9/15 12:53:32

自研富文本编辑器核心设计:从contenteditable到JSON数据模型

我前前后后用坏过好几个“editor”方案&#xff0c;最开始图省事直接引第三方富文本组件&#xff0c;结果到了项目后期菜单打架、样式污染、光标乱跳&#xff0c;改起来比重新写一个还费劲。后来我索性自己做了一个叫 editor 的文本编辑小组件&#xff0c;不追求功能大而全&…

作者头像 李华
网站建设 2026/9/15 12:52:46

图相似度模型实战:SimGNN工业落地全链路解析

1. 什么是图相似度模型&#xff1a;不是“看图说话”&#xff0c;而是让机器真正理解结构关系“图相似度模型”这六个字&#xff0c;乍一听像AI圈里又一个高冷术语&#xff0c;但其实它解决的是我们每天都在面对、却极少被意识到的底层问题——两个复杂系统之间&#xff0c;到底…

作者头像 李华