Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

74 linhas
2.3KB

  1. // lib/services/auth_service.dart
  2. import 'package:flutter_facebook_auth/flutter_facebook_auth.dart';
  3. // Un modèle simple pour stocker les informations de l'utilisateur connecté
  4. class UserProfile {
  5. final String name;
  6. final String email;
  7. final String? pictureUrl;
  8. UserProfile({required this.name, required this.email, this.pictureUrl});
  9. }
  10. class AuthService {
  11. // Propriété pour savoir si l'utilisateur est connecté et garder ses infos
  12. UserProfile? _userProfile;
  13. UserProfile? get userProfile => _userProfile;
  14. bool get isLoggedIn => _userProfile != null;
  15. /// Tente de se connecter avec Facebook
  16. Future<bool> loginWithFacebook() async {
  17. try {
  18. print("[AuthService] Tentative de connexion avec Facebook...");
  19. // Lance la popup de connexion Facebook
  20. final LoginResult result = await FacebookAuth.instance.login(
  21. permissions: ['public_profile', 'email'], // Demande les permissions
  22. );
  23. // Vérifie si la connexion a réussi
  24. if (result.status == LoginStatus.success) {
  25. print("[AuthService] Connexion Facebook réussie.");
  26. // Récupère les données de l'utilisateur depuis l'API Graph de Facebook
  27. final userData = await FacebookAuth.instance.getUserData(
  28. fields: "name,email,picture.width(200)", // Champs demandés
  29. );
  30. // Crée notre objet UserProfile
  31. _userProfile = UserProfile(
  32. name: userData['name'],
  33. email: userData['email'],
  34. pictureUrl: userData['picture']?['data']?['url'],
  35. );
  36. print("[AuthService] Utilisateur connecté : ${_userProfile!.name}");
  37. return true;
  38. } else {
  39. print("[AuthService] Échec de la connexion : ${result.status}");
  40. print("[AuthService] Message : ${result.message}");
  41. return false;
  42. }
  43. } catch (e, s) {
  44. print("[AuthService] ❌ Erreur lors de la connexion Facebook: $e");
  45. print(s);
  46. return false;
  47. }
  48. }
  49. /// Déconnecte l'utilisateur
  50. Future<void> logout() async {
  51. try {
  52. print("[AuthService] Déconnexion...");
  53. await FacebookAuth.instance.logOut();
  54. _userProfile = null;
  55. print("[AuthService] Utilisateur déconnecté.");
  56. } catch (e) {
  57. print("[AuthService] ❌ Erreur lors de la déconnexion: $e");
  58. }
  59. }
  60. }