ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

如何为自托管 sim 注册 OAuth 应用让用户连接 Slack、Google 等集成服务

如何为自托管 sim 注册 OAuth 应用让用户连接 Slack、Google 等集成服务 如何为自托管 sim 注册 OAuth 应用让用户连接 Slack、Google 等集成服务【免费下载链接】simSim is the collaborative workspace to build, deploy, and monitor AI agents and workflows. Used by 100,000 builders.项目地址: https://gitcode.com/GitHub_Trending/sim16/sim自托管的 Sim 不携带任何集成凭证官方托管平台为所有集成内置了凭证而自托管实例一个都不带。用户在 UI 里能看到连接器的入口点击 Connect 后会直接从服务提供方收到报错直到你为该服务注册自己的 OAuth 应用并设置对应的*_CLIENT_ID/*_CLIENT_SECRET。本文覆盖从确认公开 URL、在提供方开发者控制台注册 OAuth 应用到把凭证注入运行环境并验证连接成功的完整路径。只需注册团队实际使用的服务——一个 Google OAuth 应用可覆盖 Gmail、Drive、Sheets 等 15 个连接器一个 Microsoft 应用覆盖 9 个多数部署只需少量注册。先理解回调 URL 的构成用户连接账号时Sim 会把浏览器重定向到提供方提供方再重定向回https://your-sim-domain/api/auth/oauth2/callback/provider-id这个 URL 由NEXT_PUBLIC_APP_URL在请求时派生注册到提供方时必须逐字节一致包括 scheme、以及不带结尾斜杠这一点。每个连接器有唯一的 provider ID同一家属的连接器要在同一个 OAuth 应用上各注册一行回调例如一个覆盖 Gmail 和 Drive 的 Google 应用要注册https://sim.yourdomain.com/api/auth/oauth2/callback/google-email https://sim.yourdomain.com/api/auth/oauth2/callback/google-drive大多数提供方允许一个应用注册多条回调。可以把生产 URL 和 staging URL 一起注册让一个 OAuth 应用同时服务两个环境只允许一条回调的提供方则每个环境各建一个应用。第一步确认公开 URL 配置正确NEXT_PUBLIC_APP_URLhttps://sim.yourdomain.com BETTER_AUTH_URLhttps://sim.yourdomain.com两者都必须是真实的公开 originhttps://sim.yourdomain.com是文档示例替换为你自己的域名。配错时所有 OAuth 往返都会失败在 redirect-URI mismatch 上。两个细节Docker Compose 安装中在.env里设置NEXT_PUBLIC_APP_URL即可BETTER_AUTH_URL由 Compose 文件自动派生不要在.env里手写BETTER_AUTH_URL会被忽略参见 docker.mdx。Kubernetes 安装中这两个变量放在 Helm values 的app.env下参见 kubernetes.mdx。完整的环境变量背景见 environment-variables.mdx。第二步在提供方开发者控制台注册 OAuth 应用在对应服务的开发者控制台创建一个 OAuth 2.0 应用为你想接入的每个 Sim 连接器各注册一行回调provider ID 见下文对照表。scope 由 Sim 在授权时自行请求一般不需要预声明但Google 和 Microsoft 要求先在项目/应用上启用对应的 API例如 Gmail API、Drive API、Calendar API。个别服务有额外要求Bitbucket创建 OAuth consumer注册https://your-domain/api/auth/oauth2/callback/bitbucket作为 callback URL并在 consumer 上固定启用以下权限account、repository、repository:write、pullrequest、pullrequest:write、pipeline、pipeline:write、webhook。Bitbucket 的权限在 consumer 层面固定而不是每次授权时收窄webhook 权限是触发器自动订阅所必需的。Cal.comPKCE 公共客户端只需CALCOM_CLIENT_ID没有 secret。Trello不是 OAuth 2.0基于 API keyTRELLO_API_KEY回调为/api/auth/trello/callback。第三步把凭证写入运行环境凭证变量按*_CLIENT_ID/*_CLIENT_SECRET命名加到应用的环境里。注意凭证在启动时读取——运行中的 Pod/容器不会拾取新值配置后必须重启应用。Docker Compose追加到安装目录的.env文件然后重新拉起服务GOOGLE_CLIENT_ID... GOOGLE_CLIENT_SECRET... SLACK_CLIENT_ID... SLACK_CLIENT_SECRET...docker compose -f docker-compose.prod.yml up -dKubernetes变量放在app.env下chart 会把这里的每个 key 写入 chart 管理的 Secretapp: env: GOOGLE_CLIENT_ID: ... GOOGLE_CLIENT_SECRET: ... SLACK_CLIENT_ID: ... SLACK_CLIENT_SECRET: ...不要把真实值提交进 values 文件建议通过 External Secrets 或预创建的 Secret 提供app.secrets.existingSecret要求标准 key 名不支持 key 重映射。修改后用helm upgrade sim ./helm/sim --namespace simstudio应用并触发滚动。helm/sim/values.yaml里已内置GOOGLE_CLIENT_ID等占位 key 可供参考。第四步验证连接打开一个 workflow加入对应集成的 block点击连接账号。成功的路径是浏览器完成一次完整重定向后回到 Sim账号被列出这是 verify.mdx 冒烟清单第 10 项Connect an integration account对应的检查。如果失败最常见的是 redirect-URI mismatch把提供方注册的 URI 与NEXT_PUBLIC_APP_URL逐字符比对重点排查 http 与 https、结尾斜杠、apex 与www域名差异、端口。Provider 对照表所有 provider ID 的回调均为https://your-domain/api/auth/oauth2/callback/provider-id。GoogleGOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET一对变量覆盖google-email、google-drive、google-sheets、google-docs、google-calendar、google-contacts、google-forms、google-tasks、google-meet、google-groups、google-chat、google-ads、google-bigquery、google-vault、vertex-ai。MicrosoftMICROSOFT_CLIENT_ID/MICROSOFT_CLIENT_SECRET覆盖outlook、onedrive、sharepoint、microsoft-teams、microsoft-excel、microsoft-word、microsoft-planner、microsoft-dataverse、microsoft-ad。其他服务服务环境变量Provider IDSlackSLACK_CLIENT_ID/SLACK_CLIENT_SECRETslackNotionNOTION_CLIENT_ID/NOTION_CLIENT_SECRETnotionJiraJIRA_CLIENT_ID/JIRA_CLIENT_SECRETjiraConfluenceCONFLUENCE_CLIENT_ID/CONFLUENCE_CLIENT_SECRETconfluenceLinearLINEAR_CLIENT_ID/LINEAR_CLIENT_SECRETlinearAsanaASANA_CLIENT_ID/ASANA_CLIENT_SECRETasanaClickUpCLICKUP_CLIENT_ID/CLICKUP_CLIENT_SECRETclickupMondayMONDAY_CLIENT_ID/MONDAY_CLIENT_SECRETmondayAirtableAIRTABLE_CLIENT_ID/AIRTABLE_CLIENT_SECRETairtableBitbucketBITBUCKET_CLIENT_ID/BITBUCKET_CLIENT_SECRETbitbucketHubSpotHUBSPOT_CLIENT_ID/HUBSPOT_CLIENT_SECREThubspotSalesforceSALESFORCE_CLIENT_ID/SALESFORCE_CLIENT_SECRETsalesforcePipedrivePIPEDRIVE_CLIENT_ID/PIPEDRIVE_CLIENT_SECRETpipedriveAttioATTIO_CLIENT_ID/ATTIO_CLIENT_SECRETattioZoho DeskZOHO_CLIENT_ID/ZOHO_CLIENT_SECRETzoho-deskWealthboxWEALTHBOX_CLIENT_ID/WEALTHBOX_CLIENT_SECRETwealthboxBoxBOX_CLIENT_ID/BOX_CLIENT_SECRETboxDropboxDROPBOX_CLIENT_ID/DROPBOX_CLIENT_SECRETdropboxDocuSignDOCUSIGN_CLIENT_ID/DOCUSIGN_CLIENT_SECRETdocusignZoomZOOM_CLIENT_ID/ZOOM_CLIENT_SECRETzoomCal.com仅CALCOM_CLIENT_IDPKCE 公共客户端无 secretcalcomWebflowWEBFLOW_CLIENT_ID/WEBFLOW_CLIENT_SECRETwebflowWordPressWORDPRESS_CLIENT_ID/WORDPRESS_CLIENT_SECRETwordpressLinkedInLINKEDIN_CLIENT_ID/LINKEDIN_CLIENT_SECRETlinkedinXX_CLIENT_ID/X_CLIENT_SECRETxRedditREDDIT_CLIENT_ID/REDDIT_CLIENT_SECRETredditSpotifySPOTIFY_CLIENT_ID/SPOTIFY_CLIENT_SECRETspotifyTikTokTIKTOK_CLIENT_ID/TIKTOK_CLIENT_SECRETtiktok另有流程不同的服务InstagramINSTAGRAM_CLIENT_ID/INSTAGRAM_CLIENT_SECRET回调/api/auth/oauth2/callback/instagram发布内容要求云对象存储因为 Meta 从公开 HTTPS URL 拉取媒体本地磁盘存储不可用和 ShopifySHOPIFY_CLIENT_ID/SHOPIFY_CLIENT_SECRET按店铺安装。与登录凭证共用时的处理GOOGLE_CLIENT_ID和MICROSOFT_CLIENT_ID同时驱动 Sign in with Google / Microsoft 登录。凭证一设置对应登录方式就会出现在登录页。若你想用同一个 OAuth 应用驱动集成但不想开放该登录方式可以只关登录、保留集成DISABLE_GOOGLE_AUTHtrue DISABLE_MICROSOFT_AUTHtrue反过来若想一个应用同时承担登录和集成在同一 OAuth 客户端上除了集成回调/api/auth/oauth2/callback/google-email等再注册登录回调/api/auth/callback/googleMicrosoft 为/api/auth/callback/microsoft即可详见 authentication.mdx。不需要你注册的集成与额外配置大量 block 使用用户自己粘贴到 block 里的 API key 认证你不需要做任何事。Sim 另有 hosted key 机制{PREFIX}_API_KEY_COUNT{PREFIX}_API_KEY_1..N变量但注入路径被限定在 Sim 自家托管平台isHosted自托管实例上设置这些变量并不能免除用户自带 key。Webhook 触发器接收提供方回调并能验签的需要额外变量变量用途SLACK_SIGNING_SECRET验证 Slack 事件与 slash-command 签名SLACK_EXTENDED_SCOPES/NEXT_PUBLIC_SLACK_EXTENDED_SCOPES启用原生 Sim-app 触发器及其更宽的 Slack scope 集两个变量必须设为相同值同时部署必须能被提供方的服务器访问webhook 触发器才能触发——纯内网的 Sim 实例只能用 polling 触发器而 polling 触发器依赖后台作业scheduler见 background-jobs.mdx。边界与常见判断未设置凭证的提供方不会导致其他功能损坏对应用户端连接该连接器时会失败而已凭证缺失不影响未接入的集成。redirect_uri_mismatch类报错几乎总是NEXT_PUBLIC_APP_URL与提供方注册 URI 不一致Sim 发送的 URI 在请求时由该变量构建所以改完变量后重启应用再测试。恢复数据库备份后跑一次 OAuth 集成是验证ENCRYPTION_KEY与备份匹配的可靠手段——存储的 provider 凭证用它加密应用能登录但解不开凭证时问题要等到跑真实 workflow 才暴露见 verify.mdx 的After a restore。完整的 provider 列表、FAQ 与细节以 integrations-oauth.mdx 为准配置完成后建议跑一遍 verify 清单确认集成连接、后台作业与其他子系统都正常。【免费下载链接】simSim is the collaborative workspace to build, deploy, and monitor AI agents and workflows. Used by 100,000 builders.项目地址: https://gitcode.com/GitHub_Trending/sim16/sim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表