Shopify Admin API

Access token 加了 Bearer 前缀导致 401

现象#

Postman 里调通的请求搬到代码后全部返回 401,响应体是 [API] Invalid API key or access token,换一个 token 依然一样。

原因#

  • 把 Shopify token 当成 OAuth Bearer token,前面加了 Authorization 前缀
  • 从 .env 读取时带了换行或首尾空格,请求头里出现不可见字符,服务端解析失败
  • 头名拼成 X-Shopify-Access_token 或 X-Shopify-Token,连字符与大小写不一致
  • 反向代理只转发白名单头,自定义头在网关处被丢掉,应用侧读到空值

处理步骤#

  1. 抓一次原始请求,确认有且只有 X-Shopify-Access-Token,值不带 Bearer 前缀
  2. 读取配置后执行 trim(),并断言开头与长度,挡掉隐藏的换行
  3. 用 curl -H 'X-Shopify-Access-Token: $TOKEN' .../shop.json 单独验证一次
  4. 检查 Nginx 的 underscores_in_headers 与转发白名单,确保头没有被吞
  5. 使用官方 SDK 时改由 session.accessToken 注入,不要自己拼字符串

验收标准#

本地与线上同一请求都返回 200,响应头 X-Shopify-API-Version 有值,日志中不再出现该 401。

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