Autenticación con Google en Firebase | Flutter

Muchas veces se requiere controlar qué usuarios son los que usan nuestras aplicaciones o simplemente para desbloquear ciertas características específicas de nuestra app.

Flutter nos brinda algunos paquetes útiles para lograr autenticar en Firebase a un usuario con su cuenta de Google: (Proyecto completo en GitHub)
Como primer paso debemos crear un proyecto en la consola de Firebase y configurarlo siguiendo los pasos que nos muestra la consola o puedes ver el video que está al final del post para que observes la configuración completa.

Como siguiente paso vamos a crear una clase para obtener el usuario y autenticar al mismo:
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';

class AuthServiceGoogle {
  final FirebaseAuth _auth = FirebaseAuth.instance;
  final GoogleSignIn _googleSignIn = GoogleSignIn();

  User? get user {
    return _auth.currentUser;
  }

  Future<User?> signInGoogle() async {
    try {
      final GoogleSignInAccount googleUser = (await _googleSignIn.signIn())!;
      final GoogleSignInAuthentication googleAuth =
          await googleUser.authentication;
      final OAuthCredential credential = GoogleAuthProvider.credential(
        accessToken: googleAuth.accessToken,
        idToken: googleAuth.idToken,
      );
      final UserCredential userCredential =
          await _auth.signInWithCredential(credential);
      final User? user = userCredential.user;
      if (user!.uid == _auth.currentUser!.uid) return user;
    } catch (e) {
      print('Error in signInGoogle Method: ${e.toString()}');
    }
    return null;
  }

  Future<void> signOutGoogle() async {
    try {
      await _googleSignIn.signOut();
      await _auth.signOut();
    } catch (e) {
      print(e.toString());
    }
  }
}
El código anterior es necesario para la autenticación, las 3 principales clases utilizadas son las de FirebaseAuth, User del paquete de firebase_auth y GoogleSignIn de google_sign_in.
Puedes ver el proyecto completo en GitHub.

Comentarios

Entradas populares