Cambio de ClientLogin a OAuth 2.0

, YouTube Developer Relations – June 2013

A partir de la versión 3 de la API de datos, todos los métodos de autenticación admitidos por la API de datos de YouTube y la API de Analytics usan OAuth 2.0. Con frecuencia se nos pregunta si a futuro agregaremos compatibilidad para la autenticación con ClientLogin o algo similar en las API de YouTube. Sin embargo, ClientLogin dejó de estar disponible oficialmente desde el 20 de abril de 2012 y no hay planes para agregar este tipo de mecanismo.

Hay numerosas razones por las que creemos que es mejor admitir diversos flujos de autorización de OAuth 2.0 para los usuarios de YouTube que ClientLogin. Estos flujos admiten casos de uso para aplicaciones de escritorio, aplicaciones solo para web, aplicaciones móviles nativas e incluso aplicaciones que se ejecutan en dispositivos, como televisores, que no tienen mecanismos de entrada sofisticados, algo que es difícil de hacer con ClientLogin. Además, hemos descubierto que ClientLogin causa más problemas a los programadores después del lanzamiento, algunos de los cuales describimos en la publicación de nuestro blog, ClientLogin #FAIL.

Uso de OAuth 2.0 para secuencias de comandos del servidor independientes

Muchos programadores usan ClientLogin para autorizar secuencias de comandos en líneas de comandos que se ejecutan en servidores sin un navegador. Con OAuth 2.0, casi siempre habrá un servidor involucrado; la excepción es el trabajar con una aplicación de Android que utilice Google Play Services para recuperar tokens a través de GoogleAuthUtil.

En un flujo solo web, un sitio web que desee hacer invocaciones de API autenticadas en nombre de un usuario debe redirigir al usuario a una página de autenticación de google.com que explica a qué está tratando de acceder la aplicación. A continuación, la aplicación web recibe un token, que utiliza para hacer invocaciones de API. El usuario puede revocar el acceso de la aplicación en cualquier momento con la página connected apps and sites.

Nuestras muestras de código Python demuestran la forma en que las secuencias de comandos de líneas de comandos pueden iniciar un navegador y realizar invocaciones de API desde la consola, crear un servidor local para recibir el código después de que se redirige la autorización y guardar automáticamente un token para futuras invocaciones de API. El video a continuación muestra esta secuencia en acción:

El token se usa en una cadena ASCII. Si es un token offline, es portátil. Puedes usar el token recuperado para ejecutar la secuencia de comandos en un equipo de escritorio y luego copiar y usar el código en un servidor remoto sin una GUI, siempre que dicho código cree una instancia de cliente OAuth 2.0 con el mismo ID y secreto de cliente. Al igual que para Python, las bibliotecas cliente de la API de Google proporcionan métodos auxiliares para otros lenguajes de programación para la administración de los tokens, que se pueden compartir entre clientes e incluso usarse directamente en bibliotecas HTTP de nivel inferior en un encabezado de cliente o como un parámetro de URL.

Algunos ejemplos de secuencias de comandos del servidor que utilizan tokens sin conexión:

  • Un demonio que controla un directorio para detectar videos nuevos para subirlos automáticamente a YouTube
  • Una tarea cron que actualiza diariamente las listas de reproducción con contenido nuevo
  • Una secuencia de comandos que supervisa los datos de video a través de la API de YouTube Analytics y notifica a los administradores del canal cuando se producen ciertos eventos, como cuando el tiempo de reproducción agregado excede un límite. Ten presente que, en este caso, OAuth 2.0 es el único método de autorización admitido debido a que la API de Analytics no es compatible con ClientLogin.

En la sección sobre los tokens de acceso de larga duración se ofrecen más detalles acerca de cómo generar tokens sin conexión para su uso en procesos de servidor.

Recomendaciones sobre el ID del cliente y el secreto de cliente

Los códigos cuya combinación de ID de cliente y secreto de cliente sean la misma pueden usar los mismos tokens de acceso. Se recomienda permitir el acceso a los ID de cliente y secretos de cliente solo a los códigos que se ejecutan en equipos y dispositivos de tu organización.

No incluyas tu ID y secreto de cliente como parte de tu código nativo de aplicaciones móviles. Todos los programadores que realizan una autenticación OAuth 2.0 desde un dispositivo móvil deben utilizar el ID de cliente de "Aplicación instalada", que solicita información adicional para verificar que la solicitud viene exclusivamente de una aplicación publicada por tu equipo.

En los dispositivos Android, en lugar de usar un ID y secreto de cliente, la aplicación se identifica mediante una combinación del nombre del paquete y un hash del certificado de firma. En los dispositivos iOS, se utiliza el ID de paquete y el ID de la tienda de aplicaciones. Puedes encontrar información oficial acerca de cómo recuperar esta información en la página de ayuda de Google API console.

Las cuentas de servicio no funcionan con la API de YouTube

Las cuentas de servicio no funcionan para las invocaciones de API de YouTube debido a que requieren un canal de YouTube asociado. No es posible asociar canales nuevos o existentes con las cuentas de servicio. Si se intenta usar una cuenta de servicio para realizar invocaciones de la API de YouTube, se mostrará un error con el tipo de error establecido en unauthorized y la razón establecida en youtubeSignupRequired.

Acceso sin conexión/de larga duración a la API de YouTube

OAuth 2.0 tiene tokens de corta duración y de larga duración. Para las operaciones puntuales, los tokens de acceso de corta duración son la mejor opción. Estos tokens expiran poco después de que se otorgan. En el caso de las tareas de ejecución prolongada, tal vez desees adquirir un token de actualización, que se utiliza para recuperar tokens de acceso de corta duración.

Para asegurar que tu aplicación reciba un token de actualización de larga duración y no un token de acceso de corta duración, utiliza el flujo "Aplicación instalada" cuando crees un ID de cliente y selecciona Other como valor de "Tipo de aplicación instalada":

Para este tipo de uso se recomienda utilizar el flujo "Aplicación instalada". Si necesitas acceso de larga duración a la API de YouTube en una aplicación web, puedes recuperarlo estableciendo el parámetro access_type en offline y el parámetro approval_prompt en force en la solicitud de autorización inicial o en la configuración del cliente. Algunas bibliotecas de cliente administran la recuperación y la actualización de los tokens de acceso. Si deseas escribir tu propio código de autorización personalizado, esta entrada en el blog de Google Code puede servirte como base para tu código.

Uso de OAuth 2.0 con teléfonos, tablets y otros dispositivos

Al escribir aplicaciones Android, los programadores pueden aprovechar las ventajas de Google Play services para controlar los detalles de autorización. Los servicios de Google Play ofrecen un flujo de autorización estándar para todas las API de Google, que incluye las API para la plataforma de YouTube. Este enfoque proporciona una experiencia completamente superior para los usuarios de la aplicación Android que la que puede ofrecer una autenticación personalizada con ClientLogin.

En los dispositivos iOS, Google ofrece dos opciones:

Recomendamos utilizar OAuth 2.0 para dispositivos con los dispositivos diseñados para funcionar como "segunda pantalla" u otros cuyos mecanismos de entrada no son fáciles de usar, como los televisores. El funcionamiento de OAuth 2.0 para dispositivos consiste en la presentación de un código único a un usuario cuando se requiere una solicitud de autorización. En este punto, se solicita a los usuarios que visiten http://google.com/device en otro dispositivo, como una computadora portátil o un teléfono, y que ingresen el código único. La aplicación muestra una pantalla similar a esta imagen:

Mientras el usuario ingresa el código en otro dispositivo, la aplicación realiza sondeos periódicos para verificar si se ingresó el código. Una vez que se ingresa, la aplicación recupera un token para realizar invocaciones de la API. Para ver esta secuencia en acción, revisa esta demostración ejecutable en cualquier dispositivo habilitado para navegar por la web. La API por si misma funciona en cualquier plataforma, lo que la hace útil para dispositivos que no tienen capacidades de procesamiento web. Hemos publicado código de muestra en Python de la demostración para usarlo como referencia.

Resumen

La autorización OAuth 2.0 proporciona flexibilidad para los programadores que requieren la autorización de YouTube. Los programadores que están familiarizados con ClientLogin pueden encontrar que el proceso de configurar las aplicaciones para que utilicen OAuth 2.0 es un poco más demandante, pero una vez que están conectadas, las aplicaciones OAuth 2.0 ofrecen más flexibilidad, seguridad y facilidad de uso a través de múltiples plataformas para los usuarios finales.

Si tienes alguna pregunta adicional acerca de OAuth 2.0 o cualquiera de los ejemplos de este artículo, no dudes en hacerla usando la etiqueta youtube-api en StackOverflow o comunícate con nuestros Programadores de YouTube en directo, en el horario de trabajo.