Utilizar la API de Google Analytics con PHP: Inicio de sesión

Utilizar la API de Google Analytics con PHP: Inicio de sesión

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. 

Utilizar la API de Google Analytics con PHP

  • 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.

Utilizar la API de Google Analytics con PHP

El escritorio del proyecto debería tener este aspecto: 

Utilizar la API de Google Analytics con PHP

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 

Utilizar la API de Google Analytics con PHP

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.


Utilizar la API de Google Analytics con PHP

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:

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

Sin comentarios
Ha habido un error en el envío
Comentario enviado. Será revisado por la moderación antes de ser publicado.

Deja tu comentario

Tu nombre:
Tu email:
Tu comentario: