Subir vídeos a YouTube con Zend Gdata – Identificación del usuario

Siguiendo el post anterior, dónde podíamos ver que recursos nos hacían falta para empezar la odisea de compartir un vídeo en YouTube directamente, vamos a explicar el procedimiento para identificar un usuario en YouTube desde nuestra aplicación web.

Existen tres alternativas para identificar los usuarios en sus cuentas de YouTube desde aplicaciones externas:

  1. La primera se basa en el protocolo OAuth, pero aunque sea muy interesante, el soporte que tiene el módulo Zend_Gdata para este tipo de identificación es bastante limitado (recordamos que estamos trabajando sobre la versión 1.8.4).
  2. La segunda se llama ClientLogin y aunque su utilización parezca mucho más sencilla que las otras dos alternativas Google/YouTube sólo aconseja implementar este proceso de autenticación en aplicaciones de escritorio (y nunca implementarlo en aplicaciones web).
  3. La tercera, y como habréis podido adivinar leyendo la descripción de las dos anteriores la que vamos a implementar aquí, recibe el nombre de AuthSub y se basa en que el usuario se identifica en la página original de YouTube y YouTube manda al servidor de nuestra aplicación de forma segura los datos de conexión de dicho usuario.

Después de esta pequeña introducción vamos a explicar los pasos para identificar un usuario en YouTube mediante el protocolo AuthSub con el módulo Zend_Gdata.

Identificar un usuario en YouTube con AuthSub

Para identificar un usuario mediante este protocolo el primer paso de todos es direccionar al usuario a una página de YouTube para que este se identifique y de permiso para que nuestra aplicación acceda a su cuenta de usuario. Para saber a que URL debemos direccionar al usuario debemos correr el siguiente codigo PHP:
<?php

$nextUrl = 'http://nombredominio.com/path/a/pagina/de/subida';
$scope = 'http://gdata.youtube.com';
$secure = true;
$session = true;
$authSubUrl = Zend_Gdata_AuthSub::getAuthSubTokenUri($nextUrl, $scope, $secure, $session);

?>
El contenido final de $authSubUrl es la URL de YouTube dónde tenemos que redireccionar al usuario (siempre que tengamos en regal todos los requisitos previos que comentamos en el post anterior). Aun así vamos a explicar para que se utilizan las cuatro variables que hemos definido antes de generar esta dirección.

  • $nextUrl:

    $nextUrl nos indica a que página de nuestra aplicación queremos que YouTube redireccione al usuario después de haber finalizado la identificación en su aplicación. Este parámetro acepta variables en la URL por GET, así ‘http://nombredominio.com/path/a/pagina/de/subida’ podría ser perfectamente ‘http://nombredominio.com/path/a/pagina/de/subida?video=idedelvideo’.

  • $scope:

    $scope es la variable que indica al método getAuthSubTokenUri en que servicio queremos identificar el usuario (del mismo modo que identificamos en YouTube podemos identificar usuarios en Picasa, Calendar u otros servicios de Google cambiando el $scope).

  • $secure:

    $secure indica si el tipo de identificación que estamos pidiendo a YouTube es para acceder sólo a datos públicos (requerimientos de seguridad menores) o también para modificar los contenidos del usuario (requerimientos de seguridad mayores).

  • $session:

    $session define si la identificación que nos proveerá YouTube podrá ‘upgradearse’ para utilizarse durante una sesión (navegador) o sólo para una operación. Para hacer un upload de un vídeo es posible que no fuese necesario hacer este upgrade pero igualmente lo vamos a explicar en el siguiente post.

Para que el direccionamiento del usuario a YouTube sea exitoso es necesario añadir la clave de desarrollador (ver post anterior) ya sea en la URL por GET o en el header de la petición (dependiendo de como vayas a llevar al usuario a esa dirección). Veamos como añadiríamos la clave de desarrollador de las dos formas:

Añadir la clave de desarrollador en la petición a YouTube
  • Por GET en la URL:

    Para añadir la clave del desarrollador en la URL como parámetro GET debemos concatenar su valor a continuación de $authSubUrl:
    $authSubUrl = $authSubUrl.'&key=VALOR_DE_TU_CLAVE_DE_DESARROLLADOR';

  • Añadiendo la clave en el header:

    Podemos añadir la clave de desarrollador en el header de la petición para que quede de la siguiente forma:
    X-GData-Key: key=VALOR_DE_TU_CLAVE_DE_DESARROLLADORPara realizar esto desde de PHP podemos executar la siguiente operación:
    header("X-GData-Key: key=".YOUTUBE_API_KEY);

Si todo ha funcionado como es debido el usuario ya debe haber accedido a su cuenta en YouTube y debe haber dado permiso para que nuestra aplicación web realice las operaciones pertinentes en sus contenidos. En este caso nos debe haber llegado una petición a nuestro servidor, más concretamente una petición a la página ‘http://nombredominio.com/path/a/pagina/de/subida’.

En la petición “de vuelta” de YouTube nos vamos a encontrar que por GET vamos a recibir el valor de una variable llamada token. Token es el nombre de la variable que YouTube utiliza para certificar la identificación de un usuario concreto. Esta variable nos será imprescindible para poder firmar las peticiones que de aquí en adelante vamos a enviar a YouTube.

En el próximo y último post sobre Subir vídeos a YouTube con Zend Gdata vamos a describir que operaciones debemos llevar a cabo cuando YouTube nos garantiza el acceso a la cuenta de un usuario mediante el token. Hasta pronto!

One thought on “Subir vídeos a YouTube con Zend Gdata – Identificación del usuario

Leave a Reply

Your email address will not be published. Required fields are marked *