我在PHP中使用Curl将API集成到我的网站中。我将检索访问令牌并使用它来处理供应商的订单。RESTful API - 调用并使用令牌处理订单
获取令牌:
function getToken() {
// authenticate and return $token
$ch = curl_init();
$api_token = $this->config['API'];
$ninjavan_id = $this->config['ID'];
$ninjavan_secret = $this->config['SECRET'];
curl_setopt($ch, CURLOPT_URL, $api_token);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{
\"client_id\": \"$id\",
\"client_secret\": \"$secret\",
\"grant_type\": \"client_credentials\"
}");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json",
"Accept: application/json"
));
$response = curl_exec($ch);
curl_close($ch);
$json = json_decode($response, true);
$file = 'key.txt';
$token = $json['access_token'];
file_put_contents('./modules/custommodule/key.txt', $token, LOCK_EX);
}
我能够成功地检索令牌,我已经测试代码。接下来将使用该令牌。
处理订单:
$file = './modules/custommodule/key.txt';
$retrieved_token = file_get_contents($file);
do {
$retry = false;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_order);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{
//curl execution
}");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json",
"Accept: application/json",
"Authorization: Bearer $retrieved_token"
));
$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpcode === 401) { // unauthorized
getToken();
$retry = true;
}
}
while ($retry);
curl_close($ch);
file_put_contents('./modules/custommodule/response.txt', $response, LOCK_EX);
file_put_contents('./modules/custommodule/results.txt', $httpcode, LOCK_EX);
任何援助不胜感激。如果你能指出刷新令牌的指导,那将是完美的。
谢谢。
而不是直接输入你的json POST字段,你应该使用带'json_encode()'函数的数组清除你的代码! – Odyssey1111