|
- // 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 {
-
- UserProfile({required this.name, required this.email, this.pictureUrl});
- final String name;
- final String email;
- final String? 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<bool> loginWithFacebook() async {
- try {
- print('[AuthService] Tentative de connexion avec Facebook...');
-
- // Lance la popup de connexion Facebook
- final 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<void> 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');
- }
- }
- }
|