You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Netlify Lambda调用Shopify Admin REST API出现401、422错误如何解决?

问题根因排查

401未授权错误原因

  • 核心错误是axios.post参数传递格式错误:axios.post的正确语法是axios.post(请求地址, 请求体数据, 配置对象),你的代码里把请求体和配置都塞到了第二个参数的对象中,导致配置中的Authorization请求头完全没有被传递到请求中,因此接口返回未授权。
  • 次要排查点:Netlify环境变量配置错误,确认Netlify站点后台的环境变量中是否正确配置了SHOPIFY_ADMIN_API_KEY、SHOPIFY_ADMIN_PASSWORD、GATSBY_SHOPIFY_STORE_URL三个变量,注意Admin API密钥属于敏感信息,不要使用GATSBY_开头的命名,避免被打包到前端代码泄露。
  • 权限校验:确认你在Shopify后台创建的自定义应用已经开通了write_customers权限,否则即使密钥正确也会返回未授权。

422请求无法处理错误原因

  • 本地运行偶尔成功的原因是大概率你本地axios有全局默认配置,刚好带上了正确的Authorization头,请求能到达Shopify接口。返回422是请求参数不符合Shopify要求,常见原因包括:
    • 请求提交的邮箱已经在该Shopify站点的用户列表中存在
    • 邮箱格式非法
    • marketing_opt_in_level参数取值不符合你Shopify站点的营销订阅规则
    • 你提前对请求体做了JSON.stringify处理,axios默认会自动将对象转为JSON格式,手动序列化反而可能导致格式异常

修正后的代码

const axios = require('axios');

exports.handler = async (event) => {
  try {
    // 敏感变量不要用GATSBY_前缀,避免泄露到前端
    const endpoint = `https://${process.env.SHOPIFY_STORE_URL}/admin/api/2021-10/customers.json`;
    const authStr = Buffer.from(`${process.env.SHOPIFY_ADMIN_API_KEY}:${process.env.SHOPIFY_ADMIN_PASSWORD}`).toString('base64');

    const config = {
      headers: {
        'Content-Type': 'application/json',
        Authorization: `Basic ${authStr}`,
      },
    };

    // 不要提前stringify,axios会自动处理序列化
    const data = {
      customer: {
        first_name: event.body.userName || 'Subscriber',
        email: event.body.userEmail,
        accepts_marketing: true,
        marketing_opt_in_level: 'confirmed_opt_in',
      },
    };

    // 修正axios传参格式
    const { status, statusText } = await axios.post(endpoint, data, config);

    return { statusCode: status, statusText };
  } catch (error) {
    // 错误时打印完整响应信息,方便定位422的具体原因
    console.error('请求错误详情:', error.response?.data || error.message);
    return { 
      statusCode: error.response?.status || 500, 
      body: JSON.stringify({
        message: error.message,
        detail: error.response?.data || null
      })
    };
  }
};

内容的提问来源于stack exchange,提问作者csdk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:36:02