Я пытаюсь получить accessToken с помощью refreshToken, ниже, я разместил свой код, пожалуйста, кто-нибудь мне.Как использовать токен обновления, чтобы получить разрешение в фоновом режиме и получить токен доступа?
Это из плагина wordpress, который я разрабатываю, мне нужно только восстановить pageViews и pagePath, поэтому не предпочитая использовать доступный плагин.
Взятые справка из Use OAuth Refresh Token to Obtain New Access Token - Google API
if(isset($this->options['authenication_code'])){ //plugin setting page settings
global $wpdb;
$resultset = $wpdb->get_row('SELECT `refreshToken` FROM ' . $wpdb->prefix . 'analyticaAnalytics WHERE authenication_code ="' . $this->options["authenication_code"] . '"', ARRAY_A);
var_dump($resultset['refreshToken']); //retrieved refreshToken from database
if ($client->isAccessTokenExpired()) { //boolean true
$client->refreshToken($resultset['refreshToken']);
var_dump($client);//getting blank
}
}
../google-api-php-client/src/Google/Auth/oauth2.php
private function refreshTokenRequest($params)
{
if (isset($params['assertion'])) {
$this->client->getLogger()->info(
'OAuth2 access token refresh with Signed JWT assertion grants.'
);
} else {
$this->client->getLogger()->info('OAuth2 access token refresh');
}
$http = new Google_Http_Request(
self::OAUTH2_TOKEN_URI,
'POST',
array(),
$params
);
$http->disableGzip();
$request = $this->client->getIo()->makeRequest($http);
//var_dump($request);exit;//response 400, invalid grant
$code = $request->getResponseHttpCode();
$body = $request->getResponseBody();
if (200 == $code) {
$token = json_decode($body, true);
if ($token == null) {
throw new Google_Auth_Exception("Could not json decode the access token");
}
if (! isset($token['access_token']) || ! isset($token['expires_in'])) {
throw new Google_Auth_Exception("Invalid token format");
}
if (isset($token['id_token'])) {
$this->token['id_token'] = $token['id_token'];
}
$this->token['access_token'] = $token['access_token'];
$this->token['expires_in'] = $token['expires_in'];
$this->token['created'] = time();
} else {
throw new Google_Auth_Exception("Error refreshing the OAuth2 token, message: '$body'", $code);
}
}
Потратив много времени Я получил ошибку: answerecode 400 для $request = $this->client->getIo()->makeRequest($http);
, и это недопустимый грант.
Вы получаете сообщение об ошибке? – DaImTo
@DaImTo нет, я не получаю никаких ошибок или результатов. –
@DaImTo добавил полный код gistgithub ссылку на мой вопрос. –