Consumiendo Google desde iOS – La Parte Aburrida por @vermicida

Contenido del Bootcamp Dirigido por: | Última modificación: 13 de marzo de 2024 | Tiempo de Lectura: 5 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding
¿Cómo usamos Google desde iOS? Google ofrece una gran variedad de servicios a sus usuarios: Gmail, Calendar, Drive, Google+, etc. La lista es bastante larga. Basta con tener una cuenta de usuario Gmail para tener acceso gratuito a todos estos servicios. Además de estos servicios gratuitos, Google también dispone de una Cloud Platform para nuestros propios desarrollos. A día de hoy, son cinco las principales herramientas de esta Cloud Platform: App Engine, Cloud Storage, Cloud SQL, BigQuery y Compute Engine, que vienen a cubrir las distintas necesidades de almacenamiento, computación y escalabilidad de los proyectos del día a día del desarrollador medio. ¿Por qué menciono tanto servicio, gratuito o no, de la plataforma de Google? Porque todos tienen una cosa en común: para consumir sus API se requiere autorización OAuth 2.0, y lo que vamos a ver en este tutorial es válido para todos ellos. Matamos muchos pájaros de un solo tuto.

Así utilizamos Google desde iOS

Google ya ofrece Google APIs Client Library for Objective-C (Google en iOS), que nos facilita la vida sobremanera, pero el flujo de autorización OAuth 2.0, así como la consumición de las distintas APIs, se realiza de manera transparente al desarrollador; simplemente funciona. Nosotros somos desarrolladores fornidos sin miramientos, que reinventamos la rueda cuantas veces haga falta, y esta vez no haremos una excepción. Vamos a crear desde cero todo el flujo de autorización OAuth 2.0, y así conseguimos comprender qué es lo que pasa cada vez que consumimos la API de un servicio de Google. Lo haremos en un par de capítulos. Los otros capítulos son:

La parte aburrida

El primer paso que debemos hacer es crear un nuevo proyecto en Google. Este proyecto nos hará de servidor de autorización, y para ello necesitamos posicionarlo en medio -como el jueves- de nuestra arquitectura de comunicación: entre la aplicación iOS y el recurso de Google a consumir (de ahí el título del artículo, Google desde iOS). Para ello, nos dirigimos a la Developers Console de Google e iniciamos sesión con nuestro usuario de Gmail; si ya tenemos alguna sesión iniciada en el navegador entraremos directamente. En caso de ser varias las sesiones abiertas, podremos alternar entre ellas desde el avatar de cuenta situado en la esquina superior derecha.
Google Cloud Console account selection_Google desde iOS
Selecciona la cuenta donde quieres registrar la aplicación.
En la parte superior tenemos un botón rojo bien llamativo que dice Create Project. Por lo general, los botones rojos son de pánico y no deben pulsarse salvo ataque zombie, pero nosotros vamos a pulsarlo. En la ventana modal que se abre debemos indicar un Nombre y un ID de proyecto; el ID ha de ser único de manera global, por lo que puede ser complicado dar con uno disponible. Para no agotar la paciencia del desarrollador, Google ha dispuesto un botón para generar un ID aleatorio -y disponible-, por lo que aconsejo encarecidamente usarlo.
Google Cloud Console new project screen
Usa el botón I’m feeling lucky…
Una vez creado el proyecto, entramos en el dashboard del mismo. Google lleva meses unificando todos sus servicios cloud bajo esta Developers Console, por lo que no os extrañéis si al navegar por alguna sección os redirige a un portal antiguo. En cualquier caso, portal antiguo o nuevo, las secciones quedan menurizadas a la izquierda, no tiene pérdida. De las secciones que se muestran, nos interesa para este tutorial la titulada APIs & auth. Desde aquí vamos a configurar las APIs a consumir, así como datos necesarios para la autorización OAuth 2.0 desde iOS. Pero antes de hacer esto, debemos pasarnos un minuto por Xcode. Vamos a crear un nuevo proyecto en Xcode: una Single View Application para iPhone nos es suficiente para este tutorial. En el paso del wizard donde establecemos el nombre de Producto, Organización y demás, debemos prestar atención al Bundle Identifier que se auto genera, pues lo vamos a necesitar en la Cloud Console en tan solo un minuto. Termina de crear el proyecto en Xcode y nos vamos de vuelta a donde lo habíamos dejado.
Xcode new project options
¡Ten el Bundle Identifier a mano!
De vuelta en la Cloud Console, nos disponemos a generar un nuevo Client ID para nuestro proyecto; uno específico para la autorización OAuth 2.0 desde la aplicación de iOS recién creada. Vamos a la sección APIs & auth, dentro de ésta a Credentials, y por último hacemos clic en el -de nuevo- botón rojo que titula Create New Client ID. En la ventana modal que aparece, marcamos las opciones tal cual muestro en la siguiente imagen. Es decir, creamos un Client ID para aplicaciones instaladas en sistemas iOS, que es nuestro caso. Además, indicamos el Bundle Identifier que nos generó Xcode en el paso anterior.
Cloud Console new Client ID
Aquí es donde usamos el Bundle Identifier.
Vemos como se ha generado el nuevo Client ID con un montón de números raros. De todo esto, lo que más nos interesa de cara a este tutorial es el Client ID, Client Secret y Redirect URIs, pues lo necesitaremos para que el usuario autorice a la aplicación el uso de los servicios de Google en su nombre. En caso de publicar la aplicación en la App Store, necesitaremos informar el campo App Store ID, pero no es la intención ahora.
Cloud Console Client ID data
Nuestro nuevo Client ID.
Una vez que nuestra aplicación esté desarrollada, y como ya hemos comentado, deberá acceder en nombre del usuario a los servicios de Google en iOS elegidos, y para ello necesita que el propio usuario dé su consentimiento. Para ello, Google ya presenta por nosotros una pantalla al usuario informando de los servicios que se van a consumir, para que autoricemos o no el acceso; esta pantalla es configurable, así que vamos a ponerla bonita. Vamos, como no, a la sección APIs & auth, y dentro de ella a Consent screen. Se nos ofrecen muchas opciones para configurar esta pantalla de consentimiento, pero las obligatorias tan solo son Email address y Product name. Si en el proyecto existen otros miembros -sección Permissions- aparte de ti, en el campo Email address aparecerán como seleccionables; en caso contrario, solo estarás tú en la lista. En Product name ponemos algo que consideremos descriptivo. Por último, y como una imagen vale más que mil palabras, vamos a establecer un logo indicando la URL a una imagen; yo he puesto el logo de la Cloud Platform de Google, que tiene algo de relación con lo que estamos haciendo.
Cloud Console Consent Screen
Pon un logo que inspire confianza al usuario, o bien uno con el que se sienta familiarizado.
Y esto es todo por ahora. Lo siguiente es charlar brevemente sobre el flujo de autorización OAuth 2.0, que es el quid de este tutorial. Vamos a hacer un resumen de lo que hemos hecho:
  • Para consumir servicios de Google desde iOS y en nuestro nombre, necesitamos crear un proyecto en Google que nos haga de servidor de autorización. Lo hacemos desde la Cloud Console.
  • Nuestra aplicación iOS se comunica con el servidor de autorización -el proyecto Cloud- a través de un Client ID. Para ello, creamos uno desde la Cloud Console, en la sección APIs & auth > Credentials.
  • La aplicación requiere del consentimiento del usuario para acceder en su nombre a recursos de Google. La pantalla que se muestra al usuario debe informar de manera clara a quién y a qué se autoriza el acceso. Se configura en la sección APIs & auth > Consent screen de la Cloud Console.
Fernando Rodríguez

iOS Developer & Co-Fundador de KeepCoding

Posts más leídos