【问题标题】:Shopify Script tag api return 400 HTTP errorShopify 脚本标签 api 返回 400 HTTP 错误
【发布时间】:2016-02-06 22:26:23
【问题描述】:

当我向脚本标签发出请求以创建脚本时,Shopify 返回 HTTP 400 错误。

HTTP/1.1 400 Bad Request
Server: nginx
Date: Sat, 06 Feb 2016 22:16:00 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Status: 400 Bad Request
X-Frame-Options: DENY
X-ShopId: 11511010
X-ShardId: 2
X-Shopify-Shop-Api-Call-Limit: 1/40
HTTP_X_SHOPIFY_SHOP_API_CALL_LIMIT: 1/40
X-Stats-UserId: 0
X-Stats-ApiClientId: 1253884
X-Stats-ApiPermissionId: 17250892
X-XSS-Protection: 1; mode=block; report=/xss-report/30fa40b7-e2b9-44a1-b6ef-a3b43b8b95e3?source%5Baction%5D=create&source%5Bcontroller%5D=admin%2Fscript_tags&source%5Bsection%5D=admin
X-Request-Id: 30fa40b7-e2b9-44a1-b6ef-a3b43b8b95e3
X-Dc: chi2,ash

{"errors":{"script_tag":"Required parameter missing or invalid"}}

这是我的代码格式:

$request_headers[] = "X-Shopify-Access-Token:".$token_id;
$request_headers[] = "Content-Type : application/json";

$ch = curl_init('https://revestore.myshopify.com/admin/script_tags.json');
curl_setopt($ch , CURLOPT_HEADER, TRUE);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch , CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch , CURLOPT_MAXREDIRS, 3);
curl_setopt($ch , CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch , CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch , CURLOPT_TIMEOUT, 30);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch , CURLOPT_POSTFIELDS, $args); 
curl_setopt($ch , CURLOPT_HTTPHEADER, $request_headers);

$response = curl_exec($ch);
curl_close($ch);            
print_r($response);

如果有人知道相关解决方案,请帮助我。 提前致谢。

【问题讨论】:

  • 我不认为是 php 的问题,用 curl 命令行试试你的查询,当它在那里工作时,它很容易被 php 采用
  • 此错误可能是由$args 缺少script_tag 字段或包含无效字段引起的。因此,您基本上已经为我们提供了所有除了重要的部分 - $args 的值。
  • 这是我的 $args 值,$args = array( "script_tag" =>array( "event" => "onload", "id" => "42343243", "created_at" = > "2015-08-24T14:01:47-04:00", "updated_at" => "2015-08-24T14:01:47-04:00", "src"=> "alliedshades.com/my_custom.js")); $args = json_encode($args);
  • 如果您想创建一个新的 ScriptTag 资源,您需要的唯一参数/$args 是 eventsrc。设置id 是我想象的导致问题的原因(另外,丢失created_atupdated_at,它应该是由Shopify 创建的)。

标签: php api curl shopify


【解决方案1】:

如果您想创建一个新的 ScriptTag 资源,您需要的唯一参数/$args 是 eventsrc

设置id 是我想象的导致问题的原因

(另外,丢掉created_atupdated_at,应该是Shopify在创建/修改资源时分别创建的)

有关创建 ScriptTag 资源的文档: https://docs.shopify.com/api/uiintegrations/scripttag#create

【讨论】:

  • 是的,我也尝试过只使用 src 和事件。但不工作。这是我的 JSON : $args = '{"script_tag": { "event": "onload", "src": "alliedshades.com/my_custom.js" } }';
【解决方案2】:

解决我的问题。这里一切正常。只需要 http_build_query($query_string);处理 JSON 字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多