我在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