使用身份验证 API 密钥获取 json

GET json with authentication API key

我正在制作一个脚本,由 cronjob 运行。

它应该获取一些 json 订单并处理它们。

我现在的脚本是这样的:

$json_string = '/admin/orders/7109.json';
$real_url = "https://my-store.myshopify.com{$json_string}";
$user = 'my-user';
$pass = 'my-pass';

$ch = curl_init($real_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pass);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));

$result = json_decode(curl_exec($ch),true);
curl_close($ch);

file_put_contents(__DIR__ . '/../debug/tracker_test.txt', print_r($result,true));

即使我的凭据正确,我也会将其写入代码文件。

Array
(
    [errors] => [API] Invalid API key or access token (unrecognized login or wrong password)
)

我是不是漏掉了什么?

编辑:在 Shopify 的私人应用程序部分,它给出了一个示例 url 格式:

https://apikey:password@hostname/admin/resource.json

所以现在脚本看起来像这样:

$json_url = 'https://my-api-key:my-api-pass@my-store.myshopify.com/admin/orders.json';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $real_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));

$result = json_decode(curl_exec($ch), true);
curl_close($ch);

但我仍然遇到同样的错误。

原来我有一个语法错误。 我忘记用新的 url 变量更新 CURLOPT_URL

最后看起来像这样:

$json_url = 'https://my-api-key:my-api-pass@my-store.myshopify.com/admin/orders.json';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $json_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));

$result = json_decode(curl_exec($ch), true);
curl_close($ch);