这是我面临的问题:
invalid_grant
,则会收到错误fetchAccessTokenWithRefreshToken()
。 created
和expires_in
值。 我必须向其传递一整套信息:
[access_token, expires_in, created, refresh_token]
,否则它将根本无法工作!
显然我在这里做错了,我想我所需要的只是刷新令牌,以根据需要生成访问令牌。
[PHP]以下是一些摘要:
(请注意,这些仅是开发人员,我不打算对代码中的秘密进行硬编码)
此工作,因为我正在为它提供完整的$token
数组:
$token = array();
$token['access_token'] = '<<SCRUBBED_CURRENT_ACCESS_TOKEN>>>';
$token['expires_in'] = 3599;
$token['refresh_token'] = '<<SCRUBBED_REFRESH_TOKEN>>';
$token['created'] = 1587447211;
// If I leave out ANY of the values above, the token refresh does not work!
// omitted some Gmail client configuration and setup.
$this->client->setAccessToken($token);
if ($this->client->isAccessTokenExpired()) {
$this->accessToken = $this->client->fetchAccessTokenWithRefreshToken($token);
}
else {
$this->accessToken = $this->client->getAccessToken();
}
$this->service = new Google_Service_Gmail($this->client);
我希望它像这样工作:
// Omitted initial Gmail client setup
if ($this->client->isAccessTokenExpired()) {
$this->accessToken = $this->client->fetchAccessTokenWithRefreshToken('<MY_REFRESH_TOKEN');
}
else {
$this->accessToken = $this->client->getAccessToken();
}
$this->service = new Google_Service_Gmail($this->client);
if ($client->isAccessTokenExpired()) {
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
}