javascript - tienes - API incrustada de Google Analytics: ¿cómo retirar el token de acceso?
no tienes permiso para ver claves de api clientes oauth y claves de cuenta de servicio (1)
He utilizado el código proporcionado en esta pregunta para obtener acceso a la API de inserción de Google Analytics. Quiero mostrar las estadísticas de mi sitio web sin la necesidad de que los usuarios con los privilegios correctos inicien sesión (por lo que no hay pantalla de inicio de sesión).
Por esa razón, he creado una cuenta de servicio y guardado el archivo p12. Sin embargo, el siguiente código muestra una página vacía.
<!DOCTYPE html>
<html>
<head>
<title>Embed API Demo</title>
</head>
<body>
<section id="timeline"></section>
<script>
(function(w,d,s,g,js,fjs){
g=w.gapi||(w.gapi={});g.analytics={q:[],ready:function(cb){this.q.push(cb)}};
js=d.createElement(s);fjs=d.getElementsByTagName(s)[0];
js.src=''https://apis.google.com/js/platform.js'';
fjs.parentNode.insertBefore(js,fjs);js.onload=function(){g.load(''analytics'')};
}(window,document,''script''));
</script>
<script>
gapi.analytics.ready(function() {
var IDS = ''ga:XXXX''; // I''ve hidden my personal ID for security purposes
var ACCESS_TOKEN = ''key.p12''; // obtained from your service account
gapi.analytics.auth.authorize({
serverAuth: {
access_token: ACCESS_TOKEN
}
});
var timeline = new gapi.analytics.googleCharts.DataChart({
reportType: ''ga'',
query: {
''ids'': IDS,
''dimensions'': ''ga:date'',
''metrics'': ''ga:sessions'',
''start-date'': ''30daysAgo'',
''end-date'': ''yesterday'',
},
chart: {
type: ''LINE'',
container: ''timeline''
}
}).execute();
});
</script>
</body>
</html>
¿Tal vez el token de acceso no debe ser el archivo p12? Pero si es así, ¿qué debería ser? Estoy realmente perdido.
Puede usar una cuenta de servicio con la API de inserción. El truco es obtener un token de acceso del archivo .p12, pero una vez que tenga un token de acceso válido, su código funcionará perfectamente.
Acabo de verificar esto yo mismo. Estos son los pasos que tomé:
Creé una cuenta de servicio y seguí los pasos enumerados en la página de documentación del módulo de nodo google-oauth-jwt para obtener un token de acceso. (Si no está utilizando Node.js, simplemente haga una búsqueda en Google de cómo funciona esto en otros idiomas, este programa describe el proceso de PHP).
Convertí el archivo .p12 en un archivo .pem (requerido para trabajar con Node) con este comando:
openssl pkcs12 -in downloaded-key-file.p12 -out your-key-file.pem -nodes
Ejecuté el siguiente programa de nodo para obtener un token de acceso del archivo .pem:
var googleAuth = require(''google-oauth-jwt'');
var authOptions = {
email: ''[email protected]'',
keyFile: ''./key.pem'',
scopes: [''https://www.googleapis.com/auth/analytics'']
};
googleAuth.authenticate(authOptions, function (err, token) {
console.log(token);
});
Una vez que tuve el token de acceso, simplemente lo sustituí en el código que tiene en sus preguntas, encendí un servidor local y todo funcionó bien.