我想撤销令牌使用它的时间更长,我的代码以标准重定向开头 - > getToken流程:
$code = (array_key_exists('code', $_GET) ? $_GET['code'] : '');
$access_token = json_decode(DB::getToken(), true);
$guzzleClient = new \GuzzleHttp\Client(array( 'curl' => array( CURLOPT_SSL_VERIFYPEER => false, ), ));
$this->client = new Google_Client();
$this->client->setHttpClient($guzzleClient);
$this->client->setAuthConfig('client_secret.json');
$this->client->addScope("https://www.googleapis.com/auth/calendar");
$this->client->setAccessType('offline');
$this->client->setApprovalPrompt('force');
$this->client->setAccessToken($access_token);
if(!$code && !$access_token) {
$auth_url = $this->client->createAuthUrl();
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
}
if($code && !$access_token) {
$this->client->fetchAccessTokenWithAuthCode($code);
$access_token = $this->client->getAccessToken();
DB::saveToken($access_token);
}
就在这里我检查访问令牌是否已过期,如果是,我撤销令牌并期望继续使用它而没有问题:
if($this->client->isAccessTokenExpired()) {
$revoked = $this->client->revokeToken($access_token);
if($revoked) {
$access_token = $this->client->getAccessToken();
}
}
虽然出现问题并且出现错误,但我收到Token expired or revoked
错误消息。
我在这里做错了什么?
我希望在撤销后,令牌再次有效。
答案 0 :(得分:2)
我希望在撤销后,令牌再次有效。
不能再使用过期或撤销的访问令牌。撤销过期的访问令牌也没用。
我在您的代码中看到您要求offline
访问令牌。您应该收到刷新令牌。
您需要做的是使用该刷新令牌获取新的访问令牌。
请参阅that post for more information。