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
Publicar un comentario