Consumiendo Google desde iOS

| Última modificación: 23 de octubre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Como ya hemos visto en la primera parte de este tutorial de Google desde iOS (2), vamos a necesitar implementar OAuth 2.0 para la autorización de acceso a los recursos de Google por parte de la aplicación. En este capítulo vamos a comentar qué es OAuth y cómo vamos a tratarlo desde nuestra aplicación. Es de obligatoria lectura si se quiere comprender cómo funciona el código que próximamente vamos a picar.

OAuth nace por motivos de seguridad; o mejor dicho, de inseguridad. Un ejemplo común para entender el problema, y que vemos continuamente, puede ser la autenticación de usuarios en un blog a partir de sus cuentas de Facebook. No es seguro que un usuario ceda sus credenciales de Facebook al blog, ya que pone en compromiso los datos que ahí almacena. La meta de OAuth es evitar esto, la exposición de las credenciales de los usuarios.

Otro capítulo es:

Así autorizaba, así, así

¿Cómo funciona? Parece complicado, pero el proceso de autorización es realmente sencillo. Como adelanto, y siguiendo el ejemplo de arriba, decir que el usuario debe autorizar explícitamente el uso de su cuenta de Facebook por parte del blog. Una vez autorizado, Facebook genera un token de acceso que cede al blog, para que las siguientes peticiones vayan securizadas con él, y no con las credenciales del usuario.
En este tutorial vamos implementar el flujo de autorización que propone Google y que, además, es el más común en autorización OAuth 2.0. Para ello vamos crear una clase en nuestra aplicación iOS en la cual delegar la gestión del token de acceso; de esta manera, otras clases podrán apoyarse en ella para acceder a cuantos recursos -scopes- de Google se deseen.

Aquí usamos Google en iOS

La intención es que este tutorial sea un guía burros y los conceptos resulten sencillos de asimilar. Partiendo de esta premisa, vamos a explicar el flujo de autorización con un ejemplo real como la vida misma.
Supongamos que estamos un día cualquiera en el mundo de Pac-Man, y Blinky está indeciso sobre cuál camino escoger. Una pared le obstaculiza la visión, y no sabe si Pac-Man está comestible en este momento para ir a por él, o si bien se ha topado con una Power Pellet y es el propio Blinky el que está comestible, teniendo que huir en tal caso. Afortunadamente, Blinky tiene en su iPhone una aplicación que consulta el estado de Pac-Man en Google+ para así asegurarse del camino a tomar. Blinky tiene como contacto a Pac-Man en Google+, pero en el círculo de enemigos.

Oauth 2 Pac-Man_Google desde iOS (2)
Blinky necesita acceder al perfil Google+ de Pac-Man.

Vamos a explicar el flujo de autorización que desencadena la consulta de Blinky para seguir en este tutorial de Google desde iOS (2). Seguimos las flechas de arriba a abajo e izquierda a derecha:

  • Blinky pulsa el botón Ver estado de Pac-Man en su aplicación iOS.
  • La aplicación pide al servidor de autorización que le dé paso para ir a Google+, pero antes necesita que el usuario consienta la acción.
  • Se muestra Blinky una pantalla que explica que la aplicación iOS está intentando acceder a Google+.
  • Blinky está de acuerdo, necesita saber el estado de Pac-Man si quiere sobrevivir, por tanto autoriza la acción.
  • El servidor de autorización, viendo que Blinky ha dado el visto bueno, genera un código de autorización y se lo pasa a la aplicación iOS.
  • La aplicación iOS le pide al servidor de autorización que genere un token de acceso, y para ello le pasa el código de autorización recibido en el paso anterior. Este intercambio es necesario, ya que el servidor de autorización no puede generar un token de acceso para cualquiera.
  • El servidor de autorización genera el token de acceso y lo comparte con la aplicación iOS. Ya está todo listo para que Blinky pueda consultar su Google+.
  • Blinky hace la petición de estado de Pac-Man adjuntando el token de acceso en la llamada.
  • Ahora sí, el servidor de autorización le da paso para ir a Google+.

En el código que vamos a desarrollar en el próximo capítulo vamos a hacer un par de añadidos a este tutorial de Google desde iOS (2). Por un lado, vamos a almacenar el token de acceso que nos genera el servidor de autorización, para evitar pasar por el proceso de autorización completo continuamente. Por otro lado, vamos a verificar la antigüedad del token almacenado, para solicitar uno nuevo al servidor de autorización en caso de que haya expirado.
Toda esta información la tenéis mejor detallada en la sección Using OAuth 2.0 for Installed Applications de Google.
Ahora sí, vamos a codificar.

Fernando Rodríguez

iOS Developer & Co-Fundador de KeepCoding

Posts más leídos