资讯动态

Composio API 返回 400 No connected account found for this user and toolkit 怎么处理

发布时间:2026/9/12 18:03:32 来源:尧图企业网站定制
Composio API 返回 400 No connected account found for this user and toolkit 怎么处理【免费下载链接】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在调用 Composio API 执行工具时如果请求返回 HTTP 400 且错误信息为No connected account found for this user and toolkit含义很直接该user_id还没有连接到目标 toolkitComposio 找不到可用于执行工具的凭据。错误对象的suggested_fix字段也会给出同样的提示Connect the user to the toolkit first文档示例{ error: { message: No connected account found for this user and toolkit, status: 400, request_id: req_abc123def456, suggested_fix: Connect the user to the toolkit first } }Composio 中所有工具都按用户作用域隔离每个用户用自己的userID连接各自的账号Gmail、GitHub、Slack 等凭据以该userID存储。因此这个错误的修复路径就是两件事——先确认该用户确实没有可用连接再为该用户创建连接最后用ACTIVE状态验证连接可用后重试原请求。相关文档Errors、Authenticating Tools、Authentication。确认连接状态先排除有连接但不可用不要假设错误一定意味着从未连接过。一个已存在的连接也可能处于不可用状态EXPIRED、FAILED、INACTIVE只有ACTIVE状态的连接才能执行工具。先用 SDK 按user_id过滤查询该用户的连接示例为文档中的写法user_id和 auth config ID 换成你自己的值from composio import Composio composio Composio(api_keyyour_api_key) # 按 user_id、auth config 和状态过滤只查 ACTIVE 的账号 filtered_connections composio.connected_accounts.list( user_ids[user_123], auth_config_ids[your_auth_config_id], statuses[ACTIVE] ) for connection in filtered_connections.items: print(f{connection.id}: {connection.status})import { Composio } from composio/core; const composio new Composio({ apiKey: your_api_key }); // 按 userId、authConfigId 和状态过滤只查 ACTIVE 的账号 const filteredConnections await composio.connectedAccounts.list({ userIds: [user_123], authConfigIds: [your_auth_config_id], statuses: [ACTIVE] }); filteredConnections.items.forEach(connection { console.log(${connection.id}: ${connection.status}); });判断方法查不到任何连接用户确实还没连接过该 toolkit进入下一步创建连接。查到了连接但状态不是 ACTIVE按文档中的连接状态表处理——INITIATEDOAuth 流程未完成10 分钟后自动过期把用户重新引导到 Connect Link 完成授权EXPIRED或FAILED需要让用户重新授权并查看连接上的status_reason字段获取具体原因INACTIVE是通过 API 手动禁用的需要通过 API 或 dashboard 重新启用。另外检查一个容易被忽略的点创建连接时传的user_id和执行工具时传的user_id是否完全一致。连接是按userID存储的两个值不一致等价于这个用户没有连接。文档建议userID使用稳定的标识如数据库 UUID 或主键避免使用可能变化的邮箱地址。为该用户创建连接确认没有可用连接后为该用户创建连接。根据调用方式有两条路径使用 sessions 的写法如果你的 agent 使用 sessions连接可以直接通过session.authorize()按需生成 Connect Link用于引导、设置页或任务前检查session composio.create(user_iduser_123) connection_request session.authorize(gmail) # 把这个 URL 发给用户邮件、应用内通知等 print(connection_request.redirect_url)import { Composio } from composio/core; const composio new Composio({ apiKey: your_api_key }); // ---cut--- const session await composio.create(user_123); const connectionRequest await session.authorize(gmail); // 把这个 URL 发给用户邮件、应用内通知等 console.log(connectionRequest.redirectUrl);gmail换成报错信息中对应的 toolkit slug。用户在该托管链接上完成登录后Composio 创建 connected account 并存储、刷新其 token凭据不经过你的应用。直接执行工具direct execution的写法如果你的代码直接调用composio.tools.execute()用connected_accounts.link()生成 Connect Linkfrom composio import Composio composio Composio(api_keyyour_api_key) # 使用 dashboard 中的 AUTH CONFIG ID auth_config_id your_auth_config_id # 应用中每个用户使用唯一标识 user_id user-1349-129-12 connection_request composio.connected_accounts.link( user_iduser_id, auth_config_idauth_config_id, callback_urlhttps://your-app.com/callback ) redirect_url connection_request.redirect_url print(fVisit: {redirect_url} to authenticate your account)import { Composio } from composio/core; const composio new Composio({apiKey: your_api_key}); // 使用 dashboard 中的 AUTH CONFIG ID const authConfigId your_auth_config_id; // 应用中每个用户使用唯一标识 const userId user-1349-129-12; const connectionRequest await composio.connectedAccounts.link(userId, authConfigId, { callbackUrl: https://your-app.com/callback }); const redirectUrl connectionRequest.redirectUrl; console.log(Visit: ${redirectUrl} to authenticate your account);代码中需要替换的占位值your_api_key是你的 Composio API keyyour_auth_config_id是 dashboard Auth Configs 页面对应 toolkit 的 Auth Config ID如果还没有先在该 toolkit 下创建一个 Auth Config同一 auth config 可复用于所有用户user_id必须是与后续工具调用一致的该用户标识callback_url是用户完成授权后返回的地址可省略。两个需要注意的行为link()默认拒绝为同一用户、同一 auth config 创建第二个活跃连接。如果用户确实需要在该 auth config 下再连一个账号如工作 Gmail 和个人 GmailPython 传allow_multipleTrue、TypeScript 传allowMultiple: true。如果配置了 callback URL授权成功后的重定向会带有查询参数statussuccess或failed和connected_account_id新建连接的 ID。用这两个参数判断连接是否真正完成而不是只看重定向发生。验证连接可用并重试连接流程完成后回到上一节的connected_accounts.list()查询不带statuses[ACTIVE]过滤改为按user_id和auth_config_id查或直接用connected_accounts.get(your_connected_account_id)取单条确认状态为ACTIVEconnected_account composio.connected_accounts.get(your_connected_account_id) print(fStatus: {connected_account.status})只有ACTIVE状态的连接可用于执行工具。状态确认后可重试原来报错的工具调用如果再次报错且message不同例如工具执行层面外部服务返回的错误则属于其他错误类别按 Errors 中的错误类型表继续对照。相关错误与限制request_id错误对象中的request_id是本次请求的唯一标识联系 Composio 支持时带上它。连接被删除或不存在如果场景里是显式传了connected_account_id却报 connected account 不存在对应的是connectedAccountId不存在或已被删除deleted需要重新创建连接而不是重复执行工具。API key 问题要区分开401无有效 API key和403key 无权限是认证类错误与本文的400 No connected account是不同问题400在这里表示请求信息本身不被接受缺少可用的连接而不是 key 无效。dashboard 验证如果项目配置了 callback identity verificationverifier URL从 dashboard 发起的连接无法完成需要用应用自己的流程测试。更多账号管理操作刷新、启停、吊销、删除见 Connected Accounts API。【免费下载链接】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),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价