Composio Strava 工具包实战:自定义 OAuth 凭证配置,排错 “Athlete limit exceeded“ 与私有活动缺失
Composio Strava 工具包实战自定义 OAuth 凭证配置排错 Athlete limit exceeded 与私有活动缺失【免费下载链接】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 仓库中 Strava 工具包的 FAQ 文档docs/content/toolkits/faq/strava.md覆盖三个生产高频问题如何为 Strava 配置自定义 OAuth 凭证、为什么会出现Athlete limit exceeded与Application.Status.Inactive错误、以及为什么读不到私有Only Me活动。读完后你可以直接用 SDK 代码完成「自有 Strava 开发者应用 → Composio auth config → 会话绑定」的完整链路并能针对容量与 scope 问题给出可落地的处置方案。Strava 工具包在 Composio 中的定位从仓库生成的工具包目录数据 docs/public/data/toolkits.json 可以看到 Strava 工具包的基本盘slug 为strava分类为fitness描述为面向骑行者与跑者的社交健身网络认证方式仅有OAUTH2一种authSchemes: [OAUTH2]Composio 同时提供托管 OAuth 应用composioManagedAuthSchemes: [OAUTH2]即可以零凭证接入共 36 个工具toolCount: 36当前版本20260721_00覆盖活动详情/流数据/训练分区、运动员统计、路段探索、路线 GPX/TCX 导出等能力。这意味着Strava 连接必然走 OAuth2 授权流程而该工具包的 FAQ 三个问题全部围绕「用哪个 OAuth 应用、应用有什么权限与容量」展开——这正是理解整篇文档的主线。问题一如何为 Strava 配置自定义 OAuth 凭证FAQ 第一条指向官方 Strava OAuth 凭证创建指南该指南在仓库知识库的外部来源索引 docs/kb/external-sources/auth-guides.json 中登记为 “How to create OAuth2 credentials for Strava”canonical 页面为 composio.dev 的/auth/strava。在仓库内与其对应的可执行流程完整记录在 程序化 auth config 文档 与 托管应用 vs 自定义应用决策文档 中二者组合起来就是 Strava 自定义凭证的完整操作路径。1. 先在 Strava 开发者门户注册应用按custom-app-vs-managed-app文档的通用 OAuth 步骤在 Strava 开发者门户注册一个开发者应用得到Client ID与Client Secret把 Composio 的回调地址加入应用的授权重定向 URI 白名单https://backend.composio.dev/api/v1/auth-apps/add将 Client ID / Secret 提交给 Composio落成一条 auth config。2. 用 SDK 创建自定义 auth config以下代码取自 程序化 auth config 文档 中use_custom_auth的 OAuth2 示例只需把 toolkit 与凭证换成 Stravaimport os from composio import Composio composio Composio() auth_config composio.auth_configs.create( toolkitstrava, options{ type: use_custom_auth, auth_scheme: OAUTH2, name: Strava, credentials: { client_id: os.environ[STRAVA_CLIENT_ID], client_secret: os.environ[STRAVA_CLIENT_SECRET], oauth_redirect_uri: https://backend.composio.dev/api/v1/auth-apps/add, }, }, ) print(auth_config.id) # ac_xxxxxxxximport { Composio } from composio/core; const composio new Composio(); const authConfig await composio.authConfigs.create(strava, { type: use_custom_auth, authScheme: OAUTH2, name: Strava, credentials: { client_id: process.env.STRAVA_CLIENT_ID!, client_secret: process.env.STRAVA_CLIENT_SECRET!, oauth_redirect_uri: https://backend.composio.dev/api/v1/auth-apps/add, }, }); console.log(authConfig.id); // ac_xxxxxxxx关键参数说明均来自上述文档原文参数说明typeuse_custom_auth表示使用自有凭证对照选项是use_composio_managed_auth使用 Composio 托管应用Strava 亦支持见 toolkits.json 的composioManagedAuthSchemesauth_schemeStrava 只支持OAUTH2credentials.client_id/client_secret在 Strava 开发者门户注册应用后获得credentials.oauth_redirect_uri文档明确指出省略时默认使用 Composio 默认回调仅当需要把回调路由经过自有域名白标场景时才显式设置返回值ac_xxxxxxxx格式的 auth config ID需自行保存供会话引用如果不确定某工具包的 OAuth2 方案需要哪些凭证字段可以先让 SDK 查询再动态构造credentialsfields composio.toolkits.get_auth_config_creation_fields( toolkitstrava, auth_schemeOAUTH2, required_onlyTrue, ) print(fields)const fields await composio.toolkits.getAuthConfigCreationFields(strava, OAUTH2, { requiredOnly: true, }); console.log(fields);3. 把 auth config 绑定到会话文档反复强调只创建 auth config 并不会改变会话使用的凭证必须在创建会话时按 toolkit 名传入该 IDsession composio.sessions.create( user_iduser_123, auth_configs{strava: auth_config.id}, )const session await composio.create(user_123, { authConfigs: { strava: authConfig.id }, });未列入auth_configs的工具包仍走 Composio 托管认证因此可以「Strava 用自有应用、其余工具包用托管应用」按工具包粒度混用。对已用托管应用连接过的 Strava 账户FAQ 给出的动作是通过新的自定义 auth config 重新连接reconnect让新凭证与 scope 生效——这一点在问题三中是排错的关键动作。4. 什么场景下值得切到自定义应用custom-app-vs-managed-app 文档 总结了通用决策条件套用到 Strava 上用户会看到授权同意页生产环境希望显示你的应用名而非 “Composio”需要自定义 scopeComposio 默认 scope 不满足需求Strava 上最典型的诉求就是activity:read_all见问题三受共享配额限制托管应用配额在所有用户间共享自有应用独享配额与容量托管应用附加限制文档指出托管认证下轮询触发最小 15 分钟间隔自有应用在不被工具包支持限制时可更短需要白标或企业级端到端品牌展示。反过来如果只是在搭建原型、默认 scope 够用托管应用就是零成本起点无需注册任何应用。问题二为什么会出现 Athlete limit exceeded 或Application.Status.InactiveFAQ 原文给出了明确的归因当连接背后的 Strava OAuth 应用未被 Strava 完全批准/激活或已达到其运动员athlete容量上限时Strava 会拒绝授权或工具执行。具体表现分两种使用托管 Strava OAuth时授权阶段可能出现Athlete limit exceeded工具执行阶段可能出现 Strava 返回的403 响应错误码Application.Status.Inactive。仓库知识库中与该问题同源的支持文章 docs/kb/source/toolkits/strava/public.md 进一步补充了两点实操判断容量是按开发者应用维度计的connected-athlete capacity per developer application。看到Athlete limit exceeded时第一步是判断当前 auth config 用的是 Composio 托管凭证还是客户自有应用不要想当然认为客户拥有托管应用具体容量数值只在应用所有者的 Strava API 设置页可见且可能变动因此对外回答时不要引用未经核实的容量数字。针对托管应用的批准与容量问题FAQ 的立场是官方正在与 Strava 推进托管应用的审批与扩容但由于取决于 Strava 的审批流程没有可承诺的时间点。因此处置方案是生产使用或需要专属容量时创建自有 Strava OAuth 应用配置为自定义 auth config即问题一的流程再让用户通过该配置重新连接账户。即错误出现在授权阶段还是执行阶段403Application.Status.Inactive只是症状位置不同根因都指向「应用未激活」或「应用级容量用尽」解法统一为切换到自有应用。问题三为什么读不到私有Only Me活动FAQ 的归因是 scope 不足仓库中的工具目录数据为其提供了逐项佐证。托管 scope 集合与缺口FAQ 原文托管 Strava OAuth 当前的 scope 集合为read、activity:read、profile:read_all三项。activity:read只能读取按 Strava 可见性规则对授权运动员可见的活动私有Only Me活动必须持有activity:read_all当前托管集合不含activity:read_all这是缺口的直接原因。docs/public/data/toolkits.json 中 Strava 各工具的描述逐条印证了这两档 scope 的边界工具 slugscope 要求原文摘译STRAVA_GET_ACTIVITYeveryone/followers 可见性活动需activity:readonly_me私有活动需activity:read_all且活动必须属于授权运动员本人STRAVA_GET_ACTIVITY_STREAMS需要activity:readOnly Me 私有活动需要activity:read_allSTRAVA_GET_ACTIVITY_ZONESSummit 功能Everyone/Followers 可见性需activity:readOnly Me 需activity:read_all缺 Summit 订阅时返回 402STRAVA_GET_ATHLETE_ZONES需要profile:read_allSTRAVA_EXPORT_ROUTE_GPX/STRAVA_EXPORT_ROUTE_TCX私有路线需要read_allscopeSTRAVA_CREATE_AN_ACTIVITY需要activity:write当前托管集合同样没有说明写操作必须自有应用解决方案FAQ 给出的修复路径与问题一完全打通使用自有 Strava OAuth 应用在注册/配置时把activity:read_all加入申请的 scope按「问题一」的流程创建toolkitstrava的自定义 auth config重新连接该 Strava 账户——scope 是授权时授予的只换配置不重新授权不会生效重连后新 scope 才会被 Strava 授予并写入该连接的 token。如果同时还需要activity:write等其余 scope同一套自有应用流程即可覆盖scope 覆盖范围与托管 vs 自有应用的通用决策见 托管应用 vs 自定义应用scope 控制的高级用法可继续参考 控制 OAuth scope。排查速查表症状出现阶段根因处置Athlete limit exceededOAuth 授权应用级运动员容量用尽多为托管应用建自有 Strava 应用 → 自定义 auth config → 重连账户403Application.Status.Inactive工具执行应用未通过 Strava 完全批准/激活同上托管应用的批准/扩容取决于 Strava无确定时间表私有活动缺失活动读取类工具缺少activity:read_all托管集合仅read/activity:read/profile:read_all自有应用加配activity:read_all→ 自定义 auth config → 重连私有路线 GPX/TCX 导出失败路线导出工具私有路线需要read_allscope同上申请含activity:read_all的自有应用延伸阅读仓库内路径FAQ 原文docs/content/toolkits/faq/strava.md程序化创建 auth config含 Python/TypeScript 代码与字段查询 APIdocs/content/docs/authentication/programmatic-auth-configs.mdx托管应用 vs 自定义应用的决策与 dashboard 配置步骤docs/content/docs/authentication/custom-app-vs-managed-app.mdxStrava 支持知识库文章容量归属判断docs/kb/source/toolkits/strava/public.mdStrava 工具包全量工具与 scope 要求数据源docs/public/data/toolkits.json外部 OAuth 指南索引含 Strava 指南登记信息docs/kb/external-sources/auth-guides.json【免费下载链接】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),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →