我想在CURL函数上设置一个条件来检查并用刷新的令牌替换过期的令牌。
以下是检索和存储令牌的代码。我目前正在使用file_put_contents。
function getToken() {
$ch = curl_init();
$url = $this->config['URL'];
$id = $this->config['ID'];
$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);
}
存储的令牌用于CURL执行。我想实现一个条件,我必须检查并替换所声明的令牌,如果它已过期。也就是说,CURL执行将循环并检索刷新的令牌并存储在key.txt中。
response.txt和results.txt是用于故障排除的文件。
以下是我的代码:
$file = './modules/custommodule/key.txt';
$retrieved_token = file_get_contents($file);
//curl execution here
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);
//conditional statement here
curl_close($ch);
file_put_contents('./modules/custommodule/response.txt', $response, LOCK_EX);
file_put_contents('./modules/custommodule/results.txt', $httpcode, LOCK_EX);
我已经测试了没有任何带有过期令牌的条件语句。它成功返回响应http错误401和代码:2011。我正在研究使用这些值来设置条件。
我需要帮助来指导我如何设置条件(可能使用带有while循环的if / else语句)以使执行正确。
谢谢。
答案 0 :(得分:0)
请检查它是否有效刷新令牌卷曲
curl -i --user 'gigy:secret' \
-d 'grant_type=refresh_token&client_id=gigy&client_secret=secret&refresh_token=5ce4902a-e466-452d-8bbb-0fb1bf378f8a' \
-X POST http://localhost:8000/gigy/oauth/token