Как обновить токен с помощью клиента Google API?

Я экспериментировал с Google Analytics API (V3) и столкнулся с некоторыми ошибками. Во-первых, все настроено правильно и работает с моей тестовой учетной записью. Но когда я хочу получить данные из другого идентификатора профиля (та же учетная запись Google Accont / GA), я получаю ошибку 403. Странно то, что данные из некоторых учетных записей GA возвращают данные, в то время как другие генерируют эту ошибку.

Я отозвал токен и прошел аутентификацию еще раз, и теперь мне кажется, что я могу получать данные со всех своих учетных записей. Проблема решена? Нет. Поскольку срок действия ключа доступа истечет, я снова столкнусь с той же проблемой.

Если я все правильно понял, можно было бы использовать resfreshToken для получения нового authenticationTooken.

Проблема в том, что при запуске:

$client->refreshToken(refresh_token_key) 

возвращается следующая ошибка:

Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }'

Я проверил код метода refreshToken и отследил запрос обратно в файл apiOAuth2.php. Все параметры отправлены правильно. Grant_type жестко запрограммирован на «refresh_token» внутри метода, поэтому мне сложно понять, что не так. Массив параметров выглядит следующим образом:

Array ( [client_id] => *******-uqgau8uo1l96bd09eurdub26c9ftr2io.apps.googleusercontent.com [client_secret] => ******** [refresh_token] => 1\/lov250YQTMCC9LRQbE6yMv-FiX_Offo79UXimV8kvwY [grant_type] => refresh_token )

Порядок действий следующий.

$client = new apiClient();
$client->setClientId($config['oauth2_client_id']);
$client->setClientSecret($config['oauth2_client_secret']);
$client->setRedirectUri($config['oauth2_redirect_uri']);
$client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
$client->setState('offline');

$client->setAccessToken($config['token']); // The access JSON object.

$client->refreshToken($config['refreshToken']); // Will return error here

Это ошибка или я что-то неправильно понял?

86
задан Roman Starkov 7 November 2012 в 23:58
поделиться