SuperAPI AI 工具集

connector-googlemail

办公与效率

查看项目

更新于 10-15 17:31

技能介绍

用途:当用户希望其 Caffeine canister 代表已登录用户与 Gmail 交互时使用本技能。它与平台内应用自身事务邮件扩展不同,是以已登录用户本人身份操作 Gmail。核心依赖为 googlemail-client(Gmail REST API v1 的 Motoko 绑定)与 google-oauth(Google OAuth 2.0 令牌交换、刷新、PKCE 与百分号编码),并需 extension-authorization 作为前置条件。

主要能力:每个终端用户通过 OAuth 2.0 授权码 + PKCE 独立授权 canister,canister 以 caller:Principal 为键保存各自的 access_token 与 refresh_token;可查询是否已连接、获取已连接邮箱地址、开始与完成 OAuth、发送邮件、断开连接;access token 过期(HTTP 401)时静默刷新并重试一次。

安装:mops add googlemail-client@0.2.0;mops add google-oauth@0.2.1;mops add caffeineai-authorization@1.0.1。

使用方式:管理员通过受 #admin 角色保护的管理设置页录入 Google Cloud Web 应用的 Client ID 与 Client Secret,密钥仅在 canister 内保存,前端永不获取;应用 Gmail 设置页需展示可复制的回调 URI:window.location.origin + "/connect/gmail",管理员手动粘贴至 Google Cloud Console 的已授权重定向 URI,并注册每个部署来源;仅启用所需作用域。令牌保存在以 caller 为键的 Map,对外只暴露规定的端点且要求非匿名调用者,绝不返回 token。

作用域:openid email 用于通过 OIDC userinfo 获取地址;https://www.googleapis.com/auth/gmail.send 用于发信;gmail.readonly 仅在应用真正读取邮件时添加;https://mail.google.com/ 为完全访问,极少需要。

限制:所有 Config 必须 is_replicated = ?false(安全、计费与确定性原因);0.2.0 起 defaultConfig 已默认非复制,0.1.x 升级需注意。Google 刷新令牌不会轮换,可直接复用旧 refresh_token。资料未提供价格、平台可用范围等其它信息。