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
处理步骤#
- 打开 Dev Dashboard,在
Apps与Dev stores两处核对归属 - 看地址栏里的 organization ID,确认当前会话处于同一个 org
- 核对
SHOPIFY_SHOP只填子域名,不带.myshopify.com后缀 - 目标是他人的店铺时改用授权码流程,嵌入式应用改用
token exchange - 自建工具场景改为 custom distribution 安装,由商家授权后再取 token
验收标准#
再请求 token 端点返回 access_token 与 expires_in,用该 token 调 shop { name } 能拿到店铺名而不是 401。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。