如何在 Composio 会话中用 session.authorize() 生成 Connect Link 并完成聊天外的预授权

发布时间:2026/11/13 13:01:25

如何在 Composio 会话中用 session.authorize() 生成 Connect Link 并完成聊天外的预授权 如何在 Composio 会话中用 session.authorize() 生成 Connect Link 并完成聊天外的预授权【免费下载链接】composioComposio powers 1000 toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.项目地址: https://gitcode.com/GitHub_Trending/co/composio如果你的 Agent 用户在开始聊天前就应该完成账号授权——例如 onboarding 流程、设置页连接管理或在任务执行前做连接预检——Composio 提供了session.authorize()方法它在会话上按需生成一条 Connect Link托管授权页 URL你负责把该链接引导给用户授权完成后再校验连接状态。本文基于仓库中的 Manual auth management 文档 和相关 SDK 参考给出从创建会话到验证连接的完整操作路径适用于 Python 与 TypeScript 两种 SDK。前置条件已安装 Composio SDK并拥有 Composio API keyPython 中通过Composio(api_key...)传入TypeScript 中通过new Composio({ apiKey: ... })传入一个稳定的user_idAuthentication 文档 要求使用数据库主键或 UUID 这类不会变化的标识避免使用邮箱生产环境禁止使用default要预授权的 toolkit slug例如gmail、github。创建会话并生成 Connect Link在会话上调用session.authorize(toolkit_slug)返回一个 connection request 对象其中的redirect_urlPython/redirectUrlTypeScript就是 Connect Link。session composio.create(user_iduser_123) connection_request session.authorize(gmail) print(connection_request.redirect_url) # https://connect.composio.dev/link/ln_abc123import { Composio } from composio/core; const composio new Composio({ apiKey: your_api_key }); const session await composio.create(user_123); const connectionRequest await session.authorize(gmail); console.log(connectionRequest.redirectUrl); // https://connect.composio.dev/link/ln_abc123上例输出中的ln_abc123为文档示例实际链接每次生成时不同。把这个 URL 交给用户——可以渲染在你自己的连接 UI 里、发邮件或在设置页展示——用户打开后在 Composio 托管页面上完成登录凭据不经过你的应用或模型。等待授权完成wait_for_connection拿到 redirect URL 后用同一个 connection request 对象等待用户完成授权connected_account connection_request.wait_for_connection(60000) print(fConnected: {connected_account.id})const connectedAccount await connectionRequest.waitForConnection(60000); console.log(Connected: ${connectedAccount.id});该方法会持续轮询 Composio API直到连接进入ACTIVE状态返回 connected account、进入FAILED或EXPIRED等终态抛出错误或超过超时时间抛出超时错误。文档说明默认超时为 60 秒上面的代码块展示了显式传入参数等待的用法。控制授权完成后的回跳地址默认情况下用户授权后停留在 Composio 页面。如果要把用户带回你的应用在authorize()传入callback_url/callbackUrl并可以自带 query 参数携带上下文connection_request session.authorize( gmail, callback_urlhttps://your-app.com/callback?user_iduser_123sourceonboarding )const connectionRequest await session.authorize(gmail, { callbackUrl: https://your-app.com/callback?user_iduser_123sourceonboarding, });授权完成后Composio 会保留你已有的参数并追加两个参数再重定向到该地址ParameterDescriptionstatussuccess或failedconnected_account_id新创建的 connected account 的 ID文档示例示例结果实际值不同https://your-app.com/callback?user_iduser_123sourceonboardingstatussuccessconnected_account_idca_abc123在你的回调页读取status与connected_account_id即可区分授权成功或失败并把 account ID 记录到自己的数据库中。验证连接状态除了等待方法本身的返回值还可以用session.toolkits()查看会话内所有 toolkit 及其连接状态作为预授权流程的核对手段toolkits session.toolkits() for toolkit in toolkits.items: status toolkit.connection.connected_account.id if toolkit.connection.is_active else Not connected print(f{toolkit.name}: {status})const toolkits await session.toolkits(); toolkits.items.forEach((toolkit) { console.log(${toolkit.name}: ${toolkit.connection?.connectedAccount?.id ?? Not connected}); });输出中能看到对应 toolkit 的 connected account ID 说明已连接否则显示Not connected。注意只有ACTIVE状态的连接可用于执行工具如果连接停留在INITIATED说明用户打开了 Connect Link 但没有完成授权——此时需要重新引导用户访问该链接完成认证。关闭聊天内授权提示把授权完全交给自己的 UI会话默认包含COMPOSIO_MANAGE_CONNECTIONSmeta-tool会在聊天中提示用户授权。既然你要做聊天外的预授权应把它关掉避免两套授权入口并存session composio.create( user_iduser_123, manage_connectionsFalse, )const session await composio.create(user_123, { manageConnections: false, });完整流程预检必备 toolkit 再启动 Agent文档给出的典型模式是在启动 Agent 前检查所有必需连接缺哪个补授权哪个。以下代码块来自文档your-api-key与user_123需替换为你自己的 API key 和用户标识from composio import Composio composio Composio(api_keyyour-api-key) required_toolkits [gmail, github] session composio.create( user_iduser_123, manage_connectionsFalse, # Disable in-chat auth prompts ) toolkits session.toolkits() connected {t.slug for t in toolkits.items if t.connection.is_active} pending [slug for slug in required_toolkits if slug not in connected] print(fConnected: {connected}) print(fPending: {pending}) for slug in pending: connection_request session.authorize(slug) print(fConnect {slug}: {connection_request.redirect_url}) connection_request.wait_for_connection() print(All toolkits connected!)import { Composio } from composio/core; const composio new Composio({ apiKey: your-api-key }); const requiredToolkits [gmail, github]; const session await composio.create(user_123, { manageConnections: false, // Disable in-chat auth prompts }); const toolkits await session.toolkits(); const connected toolkits.items .filter((t) t.connection?.connectedAccount) .map((t) t.slug); const pending requiredToolkits.filter((slug) !connected.includes(slug)); console.log(Connected:, connected); console.log(Pending:, pending); for (const slug of pending) { const connectionRequest await session.authorize(slug); console.log(Connect ${slug}: ${connectionRequest.redirectUrl}); await connectionRequest.waitForConnection(); } console.log(All toolkits connected!);TypeScript 版本中connected的判定基于connection?.connectedAccount是否存在而 Python 版本基于is_active两者语义略有差异以你实际使用的 SDK 为准。边界与已知状态用户关闭 Connect Link 未完成授权时连接保持在INITIATED状态直到过期Authenticating Tools 文档 说明INITIATED状态的连接会在 10 分钟后自动过期之后需要重新生成 Connect Link。wait_for_connection抛出错误时对应连接进入终态如FAILED或超时FAILED的常见原因包括用户在 OAuth 中拒绝授权、授权码无效或 auth config 配置错误可检查status_reason字段后重试。若某个 toolkit 的授权流程需要额外参数如 Zendesk 的subdomainsession.authorize()之外的直接 SDK 路径composio.connected_accounts.link()/composio.connectedAccounts.link()支持传入更完整的 auth 配置参见 Authenticating Tools。仓库中还有一个更精简的官方示例Python 版 authorize.py创建限定github、gmail的会话后调用session.authorize(github)并等待连接成功打印 Connected Account ID 与 Status失败打印错误和 TypeScript 版 authorize.ts。完成上述流程后session.toolkits()中目标 toolkit 显示已连接、回调地址收到statussuccess即代表聊天外预授权完成之后可以正常创建 Agent 会话开始对话。【免费下载链接】composioComposio powers 1000 toolkits, tool search, context management, authentication, and a sandboxed workbench to help you build AI agents that turn intent into action.项目地址: https://gitcode.com/GitHub_Trending/co/composio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/9 16:25:44

TradingAgents:金融级多智能体架构设计与实盘落地

1. TradingAgents不是新概念,而是金融自动化演进的必然结果你可能在GitHub上见过几十个叫TradingAgents的仓库,点进去发现要么是空架子,要么跑不起来——这恰恰说明这个领域正处在从“玩具级Demo”向“生产级系统”跃迁的关键节点。TradingAg…

2026/11/8 9:23:32

Android Picker组件实战:时间/日历/城市选择器深度优化指南

1. 这不是“又一个Picker库”,而是Android原生选择器的生存现状实录你有没有在某个深夜改需求时,被产品甩来一句:“这个日期选得不够直观,换成日历视图吧”;或者测试提了个Bug:“城市选择器点开后卡顿两秒&…

2026/11/10 22:38:00

猫抓:3 步嗅探网页视频并保存到本地的完整指南

猫抓:3 步嗅探网页视频并保存到本地的完整指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(cat-catch)…

2026/11/13 15:04:51

特种作业证需要考试吗 电子证书怎么考怎么用

特种作业证需要考试吗 电子证书怎么考怎么用 之前考的证在外省能不能转过来?这几乎是每个准备考特种作业证的小伙伴最关心的问题之一。其实,现在很多省份已经开始推行 电子证书…

2026/11/13 15:04:51

电工作业证怎么查不到?郑州报考避坑指南全攻略

电工作业证怎么查不到?郑州报考避坑指南全攻略 实操考试心里没底怕挂科?最近不少在郑州准备报考电工作业证的朋友都在问:“电工作业证怎么查不到?”,这个问题的背后,藏着不少人的焦虑和困惑。如果你正打算报考低压电工证或高压电工证,那这份避坑指南,…

2026/11/13 15:04:51

常德建设厅特种工考试真题与备考技巧,学历不高也能考,全国通用!

常德建设厅特种工考试真题与备考技巧,学历不高也能考,全国通用! 你是不是总觉得自己学历不高,怕报名不了常德建设厅特种工考试?别担心,这正是很多人在报考前的顾虑,但其实只要符合基本条件,你一样能顺利报名、参加考试,拿到全国通用的证书,提升自己…

2026/11/13 15:04:51

邹城井下电工证怎么考网上查询流程全攻略

邹城井下电工证怎么考网上查询流程全攻略 实操考试心里没底怕挂科,特别是井下电工证这种涉及井下作业的特种作业证,考试难度和实操要求都比一般电工证高不少。很多人都在网上查询邹城井下电工证怎么考,但信息参差不齐,流程复杂,一不小心就错过关键步骤。…

2026/11/13 14:59:51

繁峙有电工证的师傅怎么复审延期?保姆级教程帮你搞定

繁峙有电工证的师傅怎么复审延期?保姆级教程帮你搞定 证书过期了不知道怎么复审延期?你不是一个人,这是很多【繁峙有电工证的师傅】最头疼的问题。别急,今天就来给你一个 保姆级教程 ,从复审流程到备考技巧,一网打尽,看完就能自己搞定。…

2026/11/12 20:35:13

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/13 0:01:06

办上海高压电工证良心建议:别被中介坑了,自己看这篇就够了

办上海高压电工证良心建议:别被中介坑了,自己看这篇就够了 你是不是也像我一样,第一次听说“高压电工证”这个名词,就感觉一头雾水?其实很多人都跟我一样,不知道去哪报名、怕被中介坑,结果花了冤枉钱还考不上。今天我就从一个在商丘培训过的学员角度,…

2026/11/13 0:01:06

黎里考电工证在哪里值不值得考

黎里考电工证在哪里值不值得考 之前考的证在外省能不能转过来?这是很多在外地工作、准备回老家发展的朋友最关心的问题。特别是在黎里地区,很多从事电力相关工作的朋友,都面临这样一个难题: 外省的电工证能否在本地使用?值不值得考?…

2026/11/13 0:01:06

毕节哪里考电工证 怎么报名学历不高也能上手

毕节哪里考电工证 怎么报名学历不高也能上手 你是不是也和我一样,学历不高,想着考个电工证,但又担心自己条件不够,怕报不上名?其实不然,只要符合条件,学历不高也能考电工证。今天就来聊聊【毕节哪里考电工证】这个问题,还有怎么报名,让你一步到位不…

2026/11/12 22:10:13

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/13 12:14:39

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑