// lib/services/auth_service.dart import 'package:flutter_facebook_auth/flutter_facebook_auth.dart'; // Un modèle simple pour stocker les informations de l'utilisateur connecté class UserProfile { final String name; final String email; final String? pictureUrl; UserProfile({required this.name, required this.email, this.pictureUrl}); } class AuthService { // Propriété pour savoir si l'utilisateur est connecté et garder ses infos UserProfile? _userProfile; UserProfile? get userProfile => _userProfile; bool get isLoggedIn => _userProfile != null; /// Tente de se connecter avec Facebook Future loginWithFacebook() async { try { print("[AuthService] Tentative de connexion avec Facebook..."); // Lance la popup de connexion Facebook final LoginResult result = await FacebookAuth.instance.login( permissions: ['public_profile', 'email'], // Demande les permissions ); // Vérifie si la connexion a réussi if (result.status == LoginStatus.success) { print("[AuthService] Connexion Facebook réussie."); // Récupère les données de l'utilisateur depuis l'API Graph de Facebook final userData = await FacebookAuth.instance.getUserData( fields: "name,email,picture.width(200)", // Champs demandés ); // Crée notre objet UserProfile _userProfile = UserProfile( name: userData['name'], email: userData['email'], pictureUrl: userData['picture']?['data']?['url'], ); print("[AuthService] Utilisateur connecté : ${_userProfile!.name}"); return true; } else { print("[AuthService] Échec de la connexion : ${result.status}"); print("[AuthService] Message : ${result.message}"); return false; } } catch (e, s) { print("[AuthService] ❌ Erreur lors de la connexion Facebook: $e"); print(s); return false; } } /// Déconnecte l'utilisateur Future logout() async { try { print("[AuthService] Déconnexion..."); await FacebookAuth.instance.logOut(); _userProfile = null; print("[AuthService] Utilisateur déconnecté."); } catch (e) { print("[AuthService] ❌ Erreur lors de la déconnexion: $e"); } } }