Como atualizar o token com o cliente da API do Google?

Venho brincando com a API do Google Analytics (V3) e encontrei alguns erros. Em primeiro lugar, tudo está configurado corretamente e funcionou com minha conta de teste. Mas quando eu quero coletar dados de outro ID de perfil (mesma conta do Google Accont / GA), recebo um erro 403. O estranho é que os dados de algumas contas do GA retornam dados, enquanto outros geram esse erro.

Revoguei o token e autentiquei mais uma vez, e agora parece que posso obter dados de todas as minhas contas. Problema resolvido? Não. Como a chave de acesso expirará, enfrentarei o mesmo problema novamente.

Se eu entendi direito, pode-se usar o resfreshToken para obter um novo authenticationTooke

O problema é que, quando eu corro:

$client->refreshToken(refresh_token_key) 

o seguinte erro é retornado:

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

Verifiquei o código por trás do método refreshToken e acompanhei a solicitação no arquivo "apiOAuth2.php". Todos os parâmetros são enviados corretamente. O grant_type é codificado para "refresh_token" dentro do método, por isso é difícil para mim entender o que está errado. A matriz de parâmetros é assim:

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

O procedimento é o seguint

$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

Isso é um bug ou eu entendi completamente algo errado?

questionAnswers(30)

yourAnswerToTheQuestion