En este artículo, vamos a ver cómo puedes utilizar el API de Google Analytics para interactuar con tus datos de Google Analytics a través de PHP.
Antes de seguir adelante, es necesario que tengas cuenta de Google Analytics. Si no la tienes, puedes conseguirla en la página de Google Analytics .
También es recomendable que conozcas el funcionamiento básico del escritorio de Google Analytics
En este artículo vamos a construir una aplicación que se parece a , pero para hacerla corta, vamos a limitar la funcionalidad y discutir cómo podemos extender nuestra demo.
El objetivo es realizar una aplicación similar a Google Analytics Explorer, limitando su funcionalidad para no extendernos demasiado.
Google Analytics API
La API de Google Analytics se divide en varias APIs. Utilizamos cada una de ellas en función de nuestras necesidades:
- Management API:
Proporciona el acceso a los datos de configuración de Google Analytics como cuentas, propiedades, vistas, objetivos ... - Metadata API:
Permite acceder a las columnas (dimensiones, métrica) de manera que no necesitamos codificar estos datos dentro de nuestra aplicación. - Core Reporting API:
Proporciona acceso a datos del escritorio de Analytics, la mayoría de las tareas están disponibles a través de esta API. - Real Time Reporting API:
Da acceso a los datos en tiempo real, como en el escritorio de Google Analytics.
- Embed API:
Permite crear escritorios insertados en tu sitio web utilizando Javascript. - MCF Reporting API:
Permite solicitar datos multicanal para un usuario autenticado, lo que significa que puedes consultar los datos de múltiples fuentes y usarlo para tus propias estadísticas.
En este artículo nos vamos a centrar en Management API, Metadata API y Core Reporting API. En primer lugar, vamos a empezar con un poco de uso básico.
Para empezar a utilizar la API, tienes que crear un nuevo proyecto en la consola de Desarrolladores Google.
El escritorio del proyecto debería tener este aspecto:
Ahora tenemos un proyecto listo para usar cualquiera de los servicios de Google previsto. Debido a que tenemos la intención de utilizar la API de Google Analytics, tenemos que activarlo.
Cuando se desea utilizar una API de Google tienes que proporcionar dos cosas:
1) Las credenciales de API.
2) tus claves de desarrollador.
Debes ir al menú, APIs y autenticación, selecciona "API" y permite API Analytics
Bajo el menú API y autenticación, selecciona credenciales y pulsa sobre Crear ID de cliente nuevo.
Selecciona Aplicación Web y a continuación introduce la URL de tu sitio web y la URL de la página redirigida de inicio de sesión. Como utilizaremos Laravel en nuestra demo, puedes utilizar localhost: 8000 para la fase de desarrollo, y no se te olvide cambiar https a http en el URL.
En la parte inferior de la página, tienes acceso a la API pública. Tienes que crear una nueva clave de acceso.
1) Elige la opción Clave de Navegador para nuestra demo.
2) En el cuadro de los referentes http, puedes dejar el valor vacío para aceptar solicitudes desde cualquier lugar, o especificar su dirección de dominio.
Ahora estamos listos para empezar a jugar con la API.
Límites y Cuotas
Cuando se trabaja con la API de Google Analytics, estás limitado a un número de solicitudes por día, por segundo, etc… Puedes leer el completo documento completo para más información.
Configuración del proyecto
Suponemos que ya sabes cómo configurar un nuevo proyecto Laravel en Homestead improved .
Requerimos "google / api-cliente": "dev-master" en el composer.json y actualizamos las dependencias.
En tu app / config / , crea un archivo llamado analytics.php donde puedes poner la configuración.
return [ 'app_name' => 'Your app name', //Can be anything 'client_id' => 'Your ID',//can be found on the credentials page 'client_secret' => 'Your secret ID',//on the credentials page 'api_key' => 'Your key'//can be found at the bottom of your credentials page ];
Para mantener los elementos por separado, creamos una carpeta llamada src dentro del directorio de la aplicación y un archivo llamado GA_Service.php donde puedas poner toda la lógica de la petición.
// App / src / GA_Service.php clase GA_Service { // ... }
Intentar acceder a esta clase desde algún lugar del código dará como resultado una excepción Class not found, por lo que podemos aprovechar la carga automática de clases del composer.
En el archivo composer.json, ve a la sección de carga automática classmap y añade nuestra ruta a la lista.
// composer.json ... "autoload":{ "classmap": [ ... , "app/src" ] }
No te olvides de ejecutar composer dump-autoload después de guardar los cambios.
De forma predeterminada, Laravel incluye un archivo llamado HomeController.php en el directorio app / controllers. Lo utilizaremos como nuestro controlador principal de la aplicación.
Vuelve a la clase GA_Service; para comunicarnos con las API de Google usamos una clase llamada Google_Client. En nuestro constructor, vamos a crear una nueva instancia y a comenzar a llenar los parámetros necesarios.
public function __construct( Google_Client $client ){ $this->client = $client; $this->init(); } private function init(){ $this->client->setClientId(Config::get('analytics.client_id') ); $this->client->setClientSecret(Config::get('analytics.client_secret')); $this->client->setDeveloperKey(Config::get('analytics.api_key')); $this->client->setRedirectUri('http://localhost:8000/login'); $this->client->setScopes(array('https://www.googleapis.com/auth/analytics')); }
En lugar de crear instancias de la clase dentro del constructor, lo pasamos como parámetro y dejamos que Laravel IoC trabaje por nosotros. Más información en este artículo.
Las tres primeras líneas del método init se explican por sí mismas; el método Config :: get toma la configuración del archivo analytics.php.
El método URI de redireccionamiento es la URL de redirección que utilizas después de la verificación de Google y que debe coincidir con la registrada previamente en la consola de Google Dashboard.
El método setScope es donde se especifica el nivel de acceso necesario para nuestra aplicación:
- https://www.googleapis.com/auth/analytics
Ver y administrar los datos de Google Analytics - https://www.googleapis.com/auth/analytics.manage.users
Ver y administrar los permisos de usuario para cuentas de Google Analytics. - https://www.googleapis.com/auth/analytics.readonly
Acceso de sólo lectura a la API de Analytics.
Después de configurar nuestro cliente de google vamos a establecer nuestro proceso de inicio de sesión:
// app/src/GA_Service.php public function isLoggedIn(){ if (isset($_SESSION['token'])) { $this->client->setAccessToken($_SESSION['token']); return true; } return $this->client->getAccessToken(); }//authenticate public function login( $code ){ $this->client->authenticate($code); $token = $this->client->getAccessToken(); $_SESSION['token'] = $token; return token; }//login public function getLoginUrl(){ $authUrl = $this->client->createAuthUrl(); return $authUrl; }//getLoginUrl
- IsLoggedIn: devuelve true si el usuario tiene un token de acceso para utilizar.
- getLoginUrl: si el usuario no está conectado, se obtiene una URL de autenticación.
- login: ya hemos establecido una URL de redirección en el escritorio de Google API, recibimos de vuelta un parámetro $ _GET ['código'] que podemos utilizar para obtener un token para nuestras peticiones.
Vamos a utilizar lo que tenemos hasta ahora. Dentro de nuestro controlador:
// app/controllers/HomeController.php class HomeController extends BaseController { private $ga; public function __construct( GA_Service $ga ){ $this->ga = $ga; } public function index() { if( $this->ga->isLoggedIn() ){ return 'Show home page'; } else{ $url = $this->ga->getLoginUrl(); return View::make('login', [ 'url' => $url ]); } }//index }//class // app/routes.php Route::get('/', 'HomeController@index'); Route::get('/login', 'HomeController@login');
Ponemos GA_Service en nuestro controlador, y cuando el usuario pulsa la ruta índice, comprobamos si está logueado. Si no, generamos la URL de autenticación.
Después de aceptar la solicitud de permiso, se le redirige a la página de inicio de sesión con el parámetro code.
// app/controllers/HomeController.php public function login(){ if( Input::has('code') ){ $code = Input::get('code'); $this->ga->login($code); return "Go to the home <a href='/'>page</a>"; } else{ return "Invalide request parameters"; }//else }//login
En nuestra función de inicio de sesión, comprobamos si el existe el parámetro code. Si es así, se lo pasamos a nuestra función GA_Service::login para que podamos autenticar y obtener un token para el usuario.
Conclusión
En este artículo hemos incluido el uso básico de la API de Google Analytics.
Comentarios