Composio Shopify Toolkit 实战指南:OAuth2/S2S 认证、完整工具发现与订单 GraphQL 操作
2026/9/11 9:28:57 网站建设 项目流程

Composio Shopify Toolkit 实战指南:OAuth2/S2S 认证、完整工具发现与订单 GraphQL 操作

【免费下载链接】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 开源仓库中 Shopify 工具包的公开支持文档(docs/kb/source/toolkits/shopify/public.md)为核心,系统讲解在 Composio 中接入 Shopify 的正确姿势:如何避开已废弃的 Admin API Key 认证、正确配置 OAuth2/S2S、处理回调与常见 400/403 错误、抓取完整工具集,以及基于SHOPIFY_GRAPH_QL_QUERY与订单类工具完成真实业务操作。读完本文,你将能够独立完成 Shopify 工具包的认证配置、工具发现与订单/GraphQL 调用链路的搭建与排障。

认证配置:放弃 Admin API Key,改用 OAuth2 或 S2S

Shopify 已经废弃了旧的"管理员自建应用"(admin-created custom app)复制粘贴 Access Token 的认证路径。新建的 Dev Dashboard 应用只会暴露Client IDClient Secret,访问令牌需要通过 Shopify 的 client-credentials 流程以编程方式换取。

因此,在 Composio 中不要引导新用户使用 API-key / Admin API Access Token 认证,而应按下述原则选择:

  • 面向终端用户(user-facing)的集成:使用OAuth2,走标准授权码流程,让店主在自己的 Shopify 店铺中完成授权;
  • 服务端到服务端(server-to-server)场景:当应用形态与 Shopify 的 client-credentials 用例匹配时,使用S2S auth

可参考 Shopify 官方文档的 client credentials grant 与 admin-created custom app tokens 两篇说明理解两种模式的区别。

自查信号:如果某个认证页面仍然要求填写 Admin API Key,请检查对应的 authConfig 是否误用了已废弃的 API-key 模式,应切换到 OAuth2/S2S 配置。在 Composio 中,authConfig 是认证配置的核心载体,仓库的 Python SDK 在 python/composio/core/models/auth_configs.py 中定义了其数据模型,示例用法可参考 python/examples/auth_configs.py。

回调地址:以 Composio 当前展示的 toolkit auth callback 为准

配置 Shopify OAuth 应用时,redirect URL 必须设置为 Composio 当前 custom-auth-config 流程中展示的确切回调地址。不要依赖本文章或旧资料里硬编码的 URL,也不要凭记忆手写 v1/v3 时代的旧回调路径——过时或拼写错误的回调路径会导致 OAuth 重定向失败(redirect failure)。

正确做法是:在 Composio 创建自定义认证配置时,从界面流程中直接复制当前的回调值,粘贴到 Shopify 应用后台的 redirect URL 配置中。仓库侧对应实现在 python/examples/auth_configs.py 中有所演示,AuthConfig 模型的字段定义见 python/composio/core/models/auth_configs.py。

自定义凭据不影响托管认证体验,Composio 仍负责令牌刷新

使用自定义 Shopify OAuth 凭据(即你自己的 Client ID / Client Secret)不会改变终端用户的托管认证体验:

  • 用户仍然走相同的 Composio connect 流程完成授权与重定向;
  • 授权完成后,Composio 自动负责令牌刷新与凭据管理,开发者无需自行处理 refresh token 的过期与续期;
  • 托管凭据(managed credentials)相关的掩码(masking)改动,对自定义凭据(custom-credential)的 toolkit 影响方式不同,不应按同一逻辑处理。

也就是说,自建凭据只影响"应用是谁"(你的 Shopify 应用),不影响"授权怎么走"(Composio 的托管 connect 流程)。

OAuth 400 排障:先查 Client Secret 与 Gated Scopes

如果 Shopify OAuth 在**令牌交换(token exchange)连接发起(connection initiation)**阶段返回 400,最常见的原因有两类:

  1. 凭据错误,尤其是 Client Secret 填错:请仔细核对 authConfig 中的 client secret(注意前后空格、大小写、复制时的隐藏字符),重新填写后发起一次全新连接;
  2. gated scopes 未经验证/批准:Shopify 部分权限范围需要应用通过审核后才可用。请确认请求的 scopes 在 Shopify 应用后台已申请并获批,且确实归属于当前应用。

此外,仓库 FAQ 还提示另一种现象:当默认 Shopify OAuth 应用处于审核中或已过期时,连接会报 "App not found",此时应换用你自己的 OAuth 应用或 API 认证方式,见 docs/content/toolkits/faq/shopify.md。

subdomain 只填店铺名,不要带.myshopify.com

当 Composio 询问 Shopify subdomain 时,只需填写店铺名

your-store-name

不要传完整主机名,例如:

your-store-name.myshopify.com # 错误

Composio 会基于 subdomain 自行拼接出完整的 Shopify 域名,多传后缀会导致域名拼接错误、连接失败。

工具发现:抓取超过默认 20 个 Shopify 工具

Composio 的工具抓取(tool fetching)默认可能只返回有限数量的工具(默认约 20 个),而 Shopify 工具包的工具远不止这些。抓取完整工具集时,需要显式传入更高的limit

from composio import Composio composio = Composio() tools = composio.tools.get( user_id="<userId>", toolkits=["shopify"], limit=1000, # 显式提高上限,抓取完整 Shopify 工具集 )

这一调用模式与仓库示例 python/examples/tools.py 中composio.tools.get(user_id="default", toolkits=["GITHUB"])的用法一致,toolkits参数按工具包名过滤,limit控制返回数量。

MCP 场景补充:如果通过 MCP 使用,除了抓取数量,还要确认目标 Shopify 工具在创建 MCP 配置时已被启用;若配置已存在,则需要修改现有配置来启用该工具。MCP 相关的认证与配置模型可参考 python/composio/core/models/mcp.py 与 python/examples/mcp_example.py。

GraphQL 查询:使用SHOPIFY_GRAPH_QL_QUERY工具

对 Shopify 发起 GraphQL 查询时,应使用更新后的工具 slugSHOPIFY_GRAPH_QL_QUERY

如果该工具在工具发现(tool discovery)中不可见,按以下顺序排查:

  1. 确认抓取的工具数量足够多(参考上节limit=1000);
  2. 确认该工具在所使用的 MCP 配置或相关配置中已被启用;
  3. 重新抓取后再次搜索该 slug。

订单操作:先SHOPIFY_GET_ORDERS_WITH_FILTERS,再取 ID 跟进

对订单执行读取/更新前,先调用SHOPIFY_GET_ORDERS_WITH_FILTERS

  1. 通过该工具确认店铺中确实存在订单;
  2. 从响应 payload 中提取订单 ID;
  3. 当可能存在多页匹配时,跟进响应中的page_info游标继续翻页;
  4. 将拿到的订单 ID 传入后续动作,例如SHOPIFY_GET_ORDERSHOPIFY_UPDATE_ORDER

注意:旧的SHOPIFY_GET_ORDER_LIST动作已被废弃,不要再使用。

403 排障:如果订单更新/读取返回 403,通常是连接缺少read_all_ordersscope。检查 Shopify 连接上的 scopes,若缺少该权限,请以包含所需订单权限的 scope 重新连接后再重试——默认订单 scope 集合无法覆盖超出其范围的读取/更新操作。该场景在 docs/content/toolkits/faq/shopify.md 中同样有记录。

自定义 Shopify 工具:在工具内部调用 GraphQL,认证由 Composio 注入

在 Shopify toolkit 下创建自定义工具/动作(custom tool/action),即可在工具内部直接调用 Shopify 的 GraphQL 端点,Composio 会通过自定义工具执行路径自动注入 Shopify 认证,无需手动携带令牌。

关键实现要点:

  • 端点地址:新示例可直接使用相对端点/graphql.json;旧代码片段使用的是完整地址https://<shopify-sub-domain>.myshopify.com/admin/api/<version>/graphql.json
  • 请求头:必须携带 JSON content type 头(Content-Type: application/json);
  • 请求体:在 body 中传入 GraphQL 查询。

自定义工具的模型与执行路径可参考 python/composio/core/models/custom_tool.py 以及 python/examples/custom_tools_agent_test.py。

仓库中的延伸参考

  • 渲染后的知识库指南:docs/content/kb/guide/toolkits-shopify.mdx(与本文同源,适合作为文档页展示);
  • 知识库文章版本:docs/kb/articles/toolkits-shopify.md;
  • 公开支持问答:docs/content/toolkits/faq/shopify.md;
  • SDK 工具抓取与执行示例:python/examples/tools.py;
  • 认证配置示例:python/examples/auth_configs.py;
  • 变更日志佐证:Shopify 属于强类型响应升级的 57 个 toolkit 之一(docs/content/changelog/12-10-25.mdx),其多类型联合字段(union type)也已按标准anyOf保留(docs/content/changelog/01-07-26.mdx),调用时注意按工具包最新版本抓取 schema。

小结:接入 Composio Shopify 工具包时,认证层优先选择 OAuth2/S2S 并严格使用 Composio 当前回调地址;工具层通过提高limit与启用 MCP 配置获取完整工具集;业务层以SHOPIFY_GET_ORDERS_WITH_FILTERS起步、以SHOPIFY_GRAPH_QL_QUERY承接 GraphQL 查询,并结合read_all_orders等 scope 排查 403——遵循这套流程即可稳定落地 Shopify 相关的 AI 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询