Shopify 报错排障

OAuth 报 shop_not_permitted 怎么解决

现象#

用 client_credentials 换 token,POST /admin/oauth/access_token 返回 Oauth error shop_not_permitted: Client credentials cannot be performed on this shop.,同一应用在开发店却正常。

原因#

  • client_credentials 只对与 app 同属一个 organization 的店铺生效,跨组织一律拒绝
  • 店铺是从店铺后台创建的开发店,没有登记进 Dev Dashboard 的 Dev stores 列表
  • 账号下有多个 organization,app 与目标店铺分别落在不同的 org 里
  • 把客户托管的正式店铺当成自有店,想用免授权流程直接取 token

处理步骤#

  1. 打开 Dev Dashboard,在 Apps 与 Dev stores 两处核对归属
  2. 看地址栏里的 organization ID,确认当前会话处于同一个 org
  3. 核对 SHOPIFY_SHOP 只填子域名,不带 .myshopify.com 后缀
  4. 目标是他人的店铺时改用授权码流程,嵌入式应用改用 token exchange
  5. 自建工具场景改为 custom distribution 安装,由商家授权后再取 token

验收标准#

再请求 token 端点返回 access_token 与 expires_in,用该 token 调 shop { name } 能拿到店铺名而不是 401。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。