Google App Script调用Shopify GraphQL API返回400错误如何解决
问题根因
你收到400错误的核心原因是请求体格式不符合Shopify GraphQL API的规范:
你当前代码中直接将纯GraphQL查询字符串做了JSON序列化,最终发送的请求体是普通字符串,而Shopify GraphQL要求POST请求的JSON体必须是包含query字段的对象结构,所以服务端识别不到必需的query参数,返回参数缺失错误。
修正后的代码
function shopifySync() { var url = "https://store-name.myshopify.com/admin/api/2021-07/graphql.json"; var payloaddata = `query {orders(first: 20) { edges { node { id } } } }`; // 修正:先构造符合规范的请求对象,再做JSON序列化 var payload = JSON.stringify({ query: payloaddata }); var password = "api_password"; // 替换为你的私有应用密码 var response = UrlFetchApp.fetch(url, { 'method': "POST", 'muteHttpExceptions': true, 'headers': { "X-Shopify-Access-Token": password, "Content-Type": "application/json" }, 'payload': payload }); Logger.log(response.getContentText()); Logger.log(response.getResponseCode()); }
额外注意事项
- 如果查询需要传入变量,可在序列化的对象中新增
variables字段传递对应参数值,结构完全遵循GraphQL官方标准 - 确认你的Shopify私有应用已经开启了订单数据的读取权限,权限不足也会触发请求报错
内容的提问来源于stack exchange,提问作者Tobias Heckmann
相关产品推荐
相关产品推荐

