Files
noteflow/OAUTH_SETUP.md
T
Claude 3cb6c81489 Feature: Ajout du support OAuth2 et Service Account pour Google Calendar
Ajout de deux méthodes d'authentification au choix pour Google Calendar :

1. **OAuth 2.0** (méthode existante améliorée) :
   - ✅ Prompt de sélection de compte Google ('select_account consent')
   - ✅ Gestion dynamique du redirect_uri avec APP_URL
   - ✅ Idéal pour accès au calendrier personnel avec consentement

2. **Service Account** (nouvelle méthode) :
   - ✅ Authentification via clé JSON sans interaction utilisateur
   - ✅ Parfait pour calendriers partagés en entreprise
   - ✅ Synchronisation automatique en arrière-plan
   - ✅ Configuration de l'email du calendrier à synchroniser

## Backend (routes/calendar.routes.js) :
- Ajout des constantes AUTH_TYPES (oauth2, service_account)
- Fonction getAuthType() pour récupérer la méthode configurée
- Fonction getServiceAccountClient() pour Service Account
- Fonction getCalendarClient() unifiée qui choisit la bonne méthode
- Route /auth-status mise à jour pour retourner le type d'auth
- Route /sync adaptée pour supporter les deux méthodes
- Support du calendrier email personnalisé pour Service Account

## Frontend (src/pages/Index.tsx) :
- Menu déroulant pour choisir entre OAuth2 et Service Account
- Interface conditionnelle selon la méthode choisie
- Champ textarea pour la clé JSON du Service Account
- Champ email pour spécifier le calendrier à synchroniser
- Affichage du type d'authentification dans le statut
- Amélioration de l'UI avec descriptions claires

## Documentation :
- OAUTH_SETUP.md : Guide complet mis à jour avec les deux méthodes
  - Section dédiée au choix de la méthode
  - Guide pas à pas pour Service Account
  - Dépannage pour les deux méthodes
- README_GOOGLE_CALENDAR.md : Guide de démarrage rapide (nouveau)
  - Comparaison des deux méthodes
  - Configuration rapide pour chaque méthode
  - Liens vers la documentation complète

Cette implémentation offre une flexibilité maximale pour s'adapter
à différents cas d'usage : personnel (OAuth2) ou professionnel (Service Account).
2025-11-12 13:05:40 +00:00

7.0 KiB

Configuration Google Calendar

Ce guide vous aide à configurer l'accès à Google Calendar avec deux méthodes disponibles : OAuth 2.0 et Service Account.

Choisir la bonne méthode

OAuth 2.0 (Recommandé pour usage personnel)

  • ✅ Accès au calendrier personnel de l'utilisateur
  • ✅ Sécurisé avec consentement explicite
  • ✅ Choix du compte Google à la connexion
  • ⚠️ Nécessite une interaction utilisateur (popup de consentement)

Service Account (Pour applications automatisées)

  • ✅ Aucune interaction utilisateur requise
  • ✅ Idéal pour calendriers partagés en entreprise
  • ✅ Fonctionne en arrière-plan
  • ⚠️ Nécessite de partager le calendrier avec le Service Account
  • ⚠️ Configuration plus technique

Configuration OAuth 2.0

Problème : Erreur 400 - redirect_uri_mismatch

Cette erreur se produit quand l'URL de redirection configurée dans votre code ne correspond pas à celle configurée dans Google Cloud Console.

Solution

1. Identifier votre URL de redirection

Votre application utilise automatiquement :

{VOTRE_DOMAINE}/api/calendar/oauth-callback

Exemples :

  • En local : http://localhost:2222/api/calendar/oauth-callback
  • En production : https://votredomaine.com/api/calendar/oauth-callback

2. Configurer la variable d'environnement APP_URL

Si vous utilisez un domaine personnalisé ou une URL différente de http://localhost:2222 :

  1. Créez un fichier .env à la racine du projet (copiez depuis .env.example) :

    cp .env.example .env
    
  2. Modifiez la variable APP_URL dans le fichier .env :

    # Pour un domaine local
    APP_URL=http://localhost:2222
    
    # Pour un domaine en production
    APP_URL=https://votredomaine.com
    
    # IMPORTANT : Pas de slash "/" à la fin !
    
  3. Redémarrez l'application pour que les changements prennent effet.

3. Configurer Google Cloud Console

  1. Allez sur Google Cloud Console - Credentials

  2. Sélectionnez votre projet

  3. Cliquez sur votre "OAuth 2.0 Client ID"

  4. Dans la section "URIs de redirection autorisées", ajoutez EXACTEMENT l'URL affichée dans l'interface NoteFlow (panneau Administration > Google Calendar)

  5. Cliquez sur "Enregistrer"

  6. Important : Attendez quelques minutes que Google propage les changements (peut prendre 5-10 minutes)

4. Tester la connexion

  1. Dans NoteFlow, allez dans Administration > Google Calendar

  2. Vérifiez que l'URL affichée dans l'encadré jaune correspond exactement à celle configurée dans Google Cloud Console

  3. Cliquez sur "Se connecter avec Google"

  4. Vous devriez maintenant voir un écran de sélection de compte Google

Problème : Pas de choix du compte Google

Solution

Ce problème a été corrigé dans le code. L'authentification utilise maintenant prompt: 'select_account consent' qui force l'affichage du sélecteur de compte Google.

Si vous ne voyez toujours pas le choix du compte :

  1. Déconnectez-vous de Google Calendar dans NoteFlow
  2. Effacez les cookies Google dans votre navigateur
  3. Reconnectez-vous

Vérification rapide

✅ Checklist :

  • Fichier .env créé avec la bonne valeur pour APP_URL
  • URL de redirection configurée dans Google Cloud Console (sans faute de frappe !)
  • API Google Calendar activée dans Google Cloud Console
  • Client ID et Client Secret enregistrés dans NoteFlow
  • Application redémarrée après modification du .env
  • Attendu 5-10 minutes après modification dans Google Cloud Console

Configuration Service Account

Le Service Account permet un accès automatisé sans interaction utilisateur, idéal pour des calendriers partagés.

Étapes de configuration

1. Créer un Service Account

  1. Allez sur Google Cloud Console - Service Accounts

  2. Sélectionnez votre projet (ou créez-en un nouveau)

  3. Cliquez sur "+ CREATE SERVICE ACCOUNT"

  4. Donnez un nom au compte (ex: noteflow-calendar)

  5. Cliquez sur "CREATE AND CONTINUE"

  6. Sautez les étapes optionnelles et cliquez sur "DONE"

2. Générer une clé JSON

  1. Dans la liste des Service Accounts, cliquez sur celui que vous venez de créer

  2. Allez dans l'onglet "KEYS"

  3. Cliquez sur "ADD KEY" > "Create new key"

  4. Choisissez le format JSON

  5. Téléchargez le fichier JSON (conservez-le en sécurité !)

3. Activer l'API Google Calendar

  1. Allez sur Google Cloud Console - API Library

  2. Recherchez "Google Calendar API"

  3. Cliquez sur "ENABLE"

4. Partager votre calendrier

  1. Ouvrez Google Calendar

  2. Trouvez votre calendrier dans la liste à gauche

  3. Cliquez sur les 3 points à côté du nom du calendrier

  4. Sélectionnez "Paramètres et partage"

  5. Faites défiler jusqu'à "Partager avec des personnes en particulier"

  6. Cliquez sur "+ Ajouter des personnes"

  7. Collez l'email du Service Account (trouvé dans le fichier JSON, champ client_email)

  8. Donnez les permissions "Afficher tous les détails des événements"

  9. Cliquez sur "Envoyer"

5. Configurer NoteFlow

  1. Dans NoteFlow, allez dans Administration > Google Calendar

  2. Sélectionnez "Service Account" dans le menu déroulant

  3. Ouvrez le fichier JSON téléchargé et copiez tout son contenu

  4. Collez le contenu dans le champ "Clé Service Account (JSON)"

  5. Entrez votre email (celui du calendrier partagé) dans "Email du calendrier à synchroniser"

  6. Cliquez sur "Enregistrer"

  7. Cliquez sur "Synchroniser" pour tester

Dépannage Service Account

Erreur : "Clé Service Account invalide"

  • Vérifiez que vous avez copié l'intégralité du fichier JSON
  • Assurez-vous qu'il n'y a pas d'espaces ou de caractères en trop

Erreur : "Calendar not found" ou "Permission denied"

  • Vérifiez que vous avez bien partagé le calendrier avec l'email du Service Account
  • Vérifiez que l'email du calendrier est correct
  • Attendez quelques minutes après avoir partagé le calendrier

Les événements ne se synchronisent pas

  • Vérifiez que l'API Google Calendar est activée dans votre projet
  • Vérifiez les logs de l'application pour plus de détails
  • Assurez-vous que le Service Account a les bonnes permissions

Besoin d'aide ?

Si le problème persiste :

  1. Vérifiez les logs de l'application pour des messages d'erreur détaillés
  2. Pour OAuth 2.0 : Assurez-vous que votre navigateur accepte les cookies tiers
  3. Pour OAuth 2.0 : Essayez en navigation privée pour éliminer les problèmes de cache
  4. Vérifiez que l'API Google Calendar est bien activée dans votre projet Google Cloud
  5. Pour Service Account : Vérifiez que le calendrier est bien partagé avec le bon email