在CURL中添加条件 - 刷新令牌

时间:2017-12-11 10:03:23

标签: php curl

我想在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语句)以使执行正确。

谢谢。

1 个答案:

答案 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