【发布时间】:2018-07-18 16:56:24
【问题描述】:
我在尝试用 Shopify 中的访问令牌交换临时代码时收到 Client error: POST https://testing-shop.myshopify.com/admin/oauth/access_token resulted in a 400 Bad Request。我正在使用最新版本的 Guzzle HTTP 客户端和 Chrome,Windows 8.1。更奇怪的是,它以前也有效。
$client = new Client();
try{
$response = $client->request(
'POST',
"https://{$store}/admin/oauth/access_token",
[
'form_params' => [
'client_id' => $api_key,
'client_secret' => $secret_key,
'code' => $query['code']
]
]
);
}catch(Exception $e){
var_dump($e);
}
我还检查了所有变量 ($api_key, $secret_key)...它们很好,这意味着它们具有值。我错过的问题可能是什么? TIA
编辑:
原来是注册web hook时的问题。
$response = $client->request(
'POST',
"https://{$store}/admin/webhooks.json",
[
'webhook' => [
'topic' => 'app/uninstalled',
'address' => 'http://example.com/shopify/uninstall',
'format' => 'json'
]
]
);
此代码会导致错误,但我不知道为什么。
【问题讨论】:
-
响应正文中没有关于错误的详细信息?仅 400 的 HTTP 响应并没有给我们太多的帮助。至于“它以前工作过”有什么变化?
-
没有关于错误的详细信息。“客户端错误:
POST https://dmt-testing-shop.myshopify.com/admin/oauth/access_token导致400 Bad Request响应:(截断...)”这是错误消息。真的什么都没有改变。 -
我不能肯定 Guzzle Exception 会包括这一点。看看
$response->getBody()我想是的。检查原始标头/响应正文会很好。类似于底层 cURL 的curl_getinfo。如果没有“真正”改变,它可能与 CA 证书相关联? -
$response 变量为空。
-
"从 Shopify 发送的 code 参数只能使用一次。"真的?签名中带有时间戳组件的 HMAC?
标签: php shopify access-token webhooks guzzle