VISITAS:

miércoles, 28 de julio de 2021

Flutter: autenticarse en Google

Requisitos

  • Flutter instalado
  • Android Studio con plugin para Flutter
  • Tener una cuenta de Google

Pasos

  1. Crear proyecto Firebase
  2. Crear aplicación Flutter
  3. Añadir aplicación Android a proyecto Firebase
  4. Añadir aplicación iOS a proyecto Firebase
  5. Añadir las dependencias al proyecto Flutter
  6. Habilitar autenticación de Google en Firebase 
  7. Integrar la autenticación en la aplicación Flutter

Crear proyecto Firebase

Entrar en la consola de Firebase (es necesaria una cuenta de Google):

Pulsar en Agregar proyecto:



En el nombre del proyecto poner, por ejemplo: "FlutterDemo" y después, pulsar en continuar



En el siguiente paso podemos habilitar o desabilitar Google Analytics (no es importante para este ejemplo). Pulsar en Continuar:


Seleccionar la cuenta por defecto para Google Analytics y pulsar en Crear proyecto


Tras unos segundos se crea el proyecto Firebase:



Pulsar en Continuar:


Aparecerá la pantalla principal del proyecto Firebase:


El siguiente paso es crear el proyecto Flutter.

Crear aplicación Flutter

Abrir Android Studio y crear un proyecto Fltutter:


O bien, si ya tenemos abierto Android Studio:




Elegir Flutter App y pulsar Next (comprobar que el directorio del SDK de Flutter es correcto):



Rellenar el nombre del proyecto, directorio, organización y pulsar Finish:



Tras unos segundos, se crea el proyecto Flutter y se abre en Android Studio.



Opcionalmente, podemos ejecutar el proyecto qe hemos creado en el simulador para comprobar que todo está bien:



Ahora tenemos que añadir las aplicaciones Android e iOS al proyecto Firebase. El proceso es diferente para cada sistema operativo.

Añadir aplicación Android al proyecto Firebase

En Android Studio, abrir el fichero <project>/android/app/build.gradle y buscar la cadena "applicationId":


El identificador de la aplicación, com.joseanquiles.google_signin, identifica unívocamente a la aplicación.
En la consola de Firebase, registrar una aplicación Android:


Poner el id de la aplicación, un sobrenombre cualquiera, opcional y pulsar en "Registrar app":


Descargar el fichero google-services.json pulsando el botón:


Copiar el fichero google-services.json al directorio <project>/android/app

En Android Studio abrir el fichero <project>/android/app/build.gradle y buscar la cadena "apply plugin". Añadir la siguiente línea:

apply plugin: 'com.google.gms.google-services'


En Android Studio abrir el fichero <project>/android/build.gradle (NOTA: es distinto del fichero anterior). Añadir la siguiente línea en la sección de dependencias:

classpath 'com.google.gms:google-services:4.3.8'

NOTA: Buscar la versión exacta actualmente en: https://developers.google.com/android/guides/google-services-plugin



Pulsar "Siguiente", de nuevo "Siguiente" y por último, pulsar en "Ir a la consola"

Y con esto, ya tenemos configurada la aplicación Android en el proyecto Firebase.

A continuación haremos el proceso similar para iOS.

Añadir aplicación iOS al proyecto Firebase

Abrir XCode y abrir el proyecto de nuestra aplicación:


Navegar hasta la carpeta ios de nuestro proyecto, seleccionar el fichero Runner.xcodeproj y pulsar Open:


Seleccionar Runner (raíz del árbol de la izquierda), pestaña General y copiar el "Bundle Identifier":


En la consola de Firebase registrar una aplicación iOS.
Pulsar en "Agregar app":


Seleccionar iOS:


Rellenar el id de la aplicación que hemos copiado en XCode, un sobrenombre opcional y pulsar en "Registrar app":


Descargar el fichero GoogleService-Info.plist:


Copiar el fichero descargado a <project>/ios/Runner

Pulsar "Siguiente", "Siguiente", "Siguiente" y "Ir a la consola".


Añadir las dependencias al proyecto Flutter


En Android Studio abrir el fichero <project>/pubspec.yaml y añadir las siguientes dependencias:

firebase_core: ^1.4.0
firebase_auth: ^3.0.1
cloud_firestore: ^2.4.0

NOTA: Buscar la versión exacta actualmente en: https://firebase.flutter.dev/

 

Pulsar en "Pub get" para descargar las dependencias:



Habilitar autenticación de Google en el proyecto Firebase

Ir a la consola de Firebase y entrar en Autenticación:



Pestaña Sign in method:


Pulsar en Google y habilitar. Introducir el correo electrónico de mantenimiento:



Pulsar en Guardar y luego en Listo:


La autenticación por Google aprecerá ahora habilitada:


La aplicación de Android necesita una huella SHA-1 que hemos dejado vacía anteriormente. Abrimos un terminal, vamos al directorio del proyecto Flutter y ejecutamos los siguientes comandos:

cd google_signin
cd android
./gradlew signingReport


La primera vez instala algunas cosas y puede tardar. Nos interesa el resultado final SHA-1:


Copiamos esta cadena tal cual y nos vamos a la consola del proyecto Firebase.




Buscamos la aplicación Android y pulsamos "Agregar huella digital":


Pegamos la huella digital y pulsamos "Guardar":


En la misma pantalla, descargamos el fichero google-services.json y lo copiamos al directorio <project>y /android/app sobreescribiendo el anterior: