He estado jugando con la API de Google Analytics (V3) y me he encontrado con algunos errores. En primer lugar, todo está configurado correctamente y funcionó con mi cuenta de prueba. Pero cuando quiero obtener datos de otra ID de perfil (Misma cuenta de Google / Cuenta GA), obtengo un error 403. Lo extraño es que los datos de algunas cuentas de GA devolverán datos mientras que otras generan este error.
Revoqué el token y me autentiqué una vez más, y ahora parece que puedo obtener datos de todas mis cuentas. ¿Problema resuelto? No. Como la clave de acceso caducará, volveré a tener el mismo problema.
Si he entendido bien las cosas, se podría usar resfreshToken para obtener un nuevo authenticationTooken.
El problema es, cuando ejecuto:
$client->refreshToken(refresh_token_key)
se devuelve el siguiente error:
Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }'
Revisé el código detrás del método refreshToken y rastreé la solicitud hasta el archivo "apiOAuth2.php". Todos los parámetros se envían correctamente. Grant_type está codificado en 'refresh_token' dentro del método, por lo que es difícil para mí entender qué está mal. La matriz de parámetros se ve así:
Array ( [client_id] => *******-uqgau8uo1l96bd09eurdub26c9ftr2io.apps.googleusercontent.com [client_secret] => ******** [refresh_token] => 1\/lov250YQTMCC9LRQbE6yMv-FiX_Offo79UXimV8kvwY [grant_type] => refresh_token )
El procedimiento es el siguiente.
$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
¿Es esto un error o he entendido mal algo por completo?