> > > > > > > > >
GRUPO EBIM 21 Oct 24

Guía para implementar el login con Google en Flutter

Compartir
  • Copiado en el portapapeles

El inicio de sesión con Google es una funcionalidad común en muchas aplicaciones móviles, ya que permite a los usuarios autenticarse de manera rápida y segura. Flutter facilita la integración de esta característica utilizando el paquete firebase_auth junto con el google_sign_in. En este artículo, te guiaré paso a paso en cómo implementar el inicio de sesión con Google en una aplicación Flutter.

Requisitos previos

  1. Tener instalado Flutter en tu sistema.
    2. Contar con un proyecto en Firebase, ya que utilizaremos Firebase Authentication.
    3. Una cuenta de Google para crear credenciales de autenticación.

Paso 1: Configura Firebase en tu proyecto de Flutter

  1. a) Crear un proyecto en Firebase
    Ve a Firebase Console y crea un nuevo proyecto.
    2. Sigue los pasos para configurar Firebase y selecciona la plataforma Android o iOS según sea tu caso.
    3. Registra tu aplicación dentro del proyecto Firebase y obtén el archivo google-services.json.
    b) Configura Firebase en Android
    1. Copia el archivo google-services.json dentro de tu proyecto Flutter en la ruta android/app/.
    2. En el archivo android/build.gradle, agrega:
    classpath ‘com.google.gms:google-services:4.3.10’
    3. En el archivo android/app/build.gradle, agrega:
    apply plugin: ‘com.google.gms.google-services’

Paso 2: Añade dependencias en pubspec.yaml

Añade las siguientes dependencias en el archivo pubspec.yaml para integrar Firebase y Google Sign-In en tu proyecto:

«`yaml
dependencies:
firebase_core: latest_version
firebase_auth: latest_version
google_sign_in: latest_version
«`
Luego, ejecuta flutter pub get para instalar las dependencias.

Paso 3: Inicializa Firebase

Antes de usar Firebase Authentication, debes inicializar Firebase en tu aplicación. Modifica el archivo main.dart como se muestra a continuación:

«`dart
import ‘package:firebase_core/firebase_core.dart’;
import ‘package:flutter/material.dart’;

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
«`

Paso 4: Implementa el inicio de sesión con Google

Ahora, vamos a implementar la autenticación con Google usando Firebase Authentication y Google Sign-In. Crea el siguiente servicio de autenticación en un nuevo archivo auth_service.dart:

«`dart
import ‘package:firebase_auth/firebase_auth.dart’;
import ‘package:google_sign_in/google_sign_in.dart’;

class AuthService {
final GoogleSignIn googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance;

Future<User?> signInWithGoogle() async {
try {
final GoogleSignInAccount? googleUser = await googleSignIn.signIn();
if (googleUser == null) return null;
final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
final OAuthCredential credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
final UserCredential userCredential = await _auth.signInWithCredential(credential);
return userCredential.user;
} catch (e) {
print(e.toString());
return null;
}
}

Future<void> signOut() async {
await googleSignIn.signOut();
await _auth.signOut();
}
}
«`

Paso 5: Crear la UI de login

Ahora vamos a crear una interfaz básica que permita al usuario iniciar sesión con Google.

«`dart
import ‘package:flutter/material.dart’;
import ‘package:firebase_auth/firebase_auth.dart’;
import ‘auth_service.dart’;

class HomeScreen extends StatelessWidget {
final AuthService _authService = AuthService();

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(‘Login con Google’),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
User? user = await _authService.signInWithGoogle();
if (user != null) {
print(‘Usuario autenticado: ${user.displayName}’);
}
},
child: Text(‘Iniciar sesión con Google’),
),
),
);
}
}
«`

Paso 6: Verificar el estado de la sesión

Si deseas verificar si el usuario está autenticado y mostrar su información, puedes hacerlo de la siguiente manera:

«`dart
class HomeScreen extends StatelessWidget {
final FirebaseAuth _auth = FirebaseAuth.instance;

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(‘Inicio’),
),
body: Center(
child: _auth.currentUser == null
? Text(‘No has iniciado sesión’)
: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(‘Bienvenido ${_auth.currentUser?.displayName}’),
ElevatedButton(
onPressed: () async {
await AuthService().signOut();
print(‘Cerraste sesión’);
},
child: Text(‘Cerrar sesión’),
),
],
),
),
);
}
}
«`

Conclusión

Con estos pasos, has implementado un sistema de inicio de sesión con Google en tu aplicación Flutter. Utilizamos Firebase Authentication para manejar el proceso de autenticación y Google Sign-In para gestionar las credenciales de Google. ¡Ahora puedes ofrecer a tus usuarios una forma rápida y segura de iniciar sesión!


En GRUPO EBIM desarrollamos soluciones TI a la medida de las necesidades de tu empresa. Somos expertos en consultoría SAP, Outsourcing de personal TI, y contamos con un equipo de profesionales dispuestos a brindar soluciones digitales escalables para tu negocio. ¡Llena nuestro formulario de contacto y obtén más información sobre los servicios que ofrecemos!

ES
Abrir chat
Hola 👋
¿En qué podemos ayudarte?