Files
noteflow/GUIDE_ERREUR_OAUTH_GOOGLE.md
Claude 08a748aa3b Fix: Restauration URL hardcodée pour OAuth Google Calendar
Problème:
L'authentification OAuth Google Calendar échouait avec "Error 400: invalid_request"
et "Accès bloqué" depuis que l'URL est devenue configurable. Avant, l'URL
était hardcodée à https://note.ffnancy.fr et fonctionnait correctement.

Cause:
Quand app_url n'est pas configuré dans les paramètres ET que la détection
automatique échoue, l'application ne pouvait pas générer de redirect_uri
valide, causant le rejet par Google OAuth.

Solution:
Ajout d'une URL de fallback hardcodée en dernière priorité pour garantir
que l'authentification OAuth fonctionne toujours :

Ordre de priorité (cascade):
1. customRedirectUri (si fournie explicitement)
2. app_url configurée dans paramètres
3. URL détectée depuis headers HTTP
4. **URL hardcodée par défaut: https://note.ffnancy.fr** (NOUVEAU)

Changements:
- routes/calendar.routes.js:
  * Ajout constante defaultProductionUrl = 'https://note.ffnancy.fr'
  * Modification cascade redirectUri pour inclure fallback hardcodé
  * Ajout log: "OAuth redirect URI utilisée" pour debug
  * Suppression erreur bloquante si aucune URL trouvée

- src/pages/Index.tsx:
  * Revert des messages d'erreur complexes (pas nécessaires)
  * Retour au message simple et clair

- GUIDE_ERREUR_OAUTH_GOOGLE.md: (NOUVEAU)
  * Guide complet pour résoudre "Error 400: invalid_request"
  * Instructions pour ajouter utilisateurs testeurs dans Google Console
  * Instructions pour publier l'application OAuth
  * FAQ et troubleshooting détaillé

Comportement:
- OAuth fonctionne immédiatement sans configuration manuelle app_url
- Compatible avec proxy inverse et détection automatique
- Garde la flexibilité de configuration pour autres environnements
- Log l'URL utilisée pour faciliter le debug

Cette correction restaure le fonctionnement d'avant tout en gardant
la flexibilité de configuration pour les cas d'usage avancés.
2025-11-13 16:22:55 +00:00

175 lines
6.3 KiB
Markdown

# 🚨 Résolution : Erreur 400 - Accès bloqué Google OAuth
## L'erreur que vous voyez
```
Accès bloqué : erreur d'autorisation
You can't sign in to this app because it doesn't comply with Google's OAuth 2.0 policy
Error 400: invalid_request
```
## 🔍 Cause du problème
Cette erreur se produit quand votre **application OAuth est en mode "Testing"** dans Google Cloud Console et que l'utilisateur qui essaie de se connecter n'est pas dans la liste des testeurs autorisés.
## ✅ Solution complète (étape par étape)
### Option 1 : Ajouter l'utilisateur comme testeur (Solution rapide)
#### Étape 1 : Accéder à l'écran de consentement OAuth
1. Allez sur [Google Cloud Console](https://console.cloud.google.com)
2. Sélectionnez votre projet
3. Dans le menu de gauche : **APIs & Services** > **OAuth consent screen**
#### Étape 2 : Vérifier le statut de publication
Vous devriez voir :
```
Publishing status: Testing
```
#### Étape 3 : Ajouter des utilisateurs testeurs
1. Faites défiler jusqu'à la section **"Test users"**
2. Cliquez sur **"+ ADD USERS"**
3. Ajoutez l'adresse email : `michaelschal@gmail.com`
4. Cliquez sur **"SAVE"**
#### Étape 4 : Tester la connexion
1. Retournez sur NoteFlow
2. Dans **Administration** > **Google Calendar**
3. Cliquez sur **"Se connecter avec Google"**
4. ✅ Vous devriez maintenant pouvoir vous authentifier !
---
### Option 2 : Publier l'application (Solution permanente)
⚠️ **Attention** : Cette option est pour une utilisation publique. Si c'est pour un usage personnel, utilisez l'Option 1.
#### Étape 1 : Préparer l'application
1. Allez sur [Google Cloud Console](https://console.cloud.google.com)
2. **APIs & Services** > **OAuth consent screen**
#### Étape 2 : Compléter l'écran de consentement
Assurez-vous d'avoir rempli :
- ✅ App name (Nom de l'application) : `NoteFlow`
- ✅ User support email (Email de support)
- ✅ Developer contact information (Informations de contact)
- ✅ App logo (Optionnel mais recommandé)
- ✅ App domain (Domaine de l'application) : `note.ffnancy.fr`
- ✅ Authorized domains : `ffnancy.fr`
#### Étape 3 : Vérifier les Scopes (Permissions)
Dans l'onglet **"Scopes"**, assurez-vous d'avoir uniquement :
```
https://www.googleapis.com/auth/calendar.readonly
https://www.googleapis.com/auth/calendar.events
```
Ces scopes sont considérés comme "sensibles" mais **ne nécessitent PAS** de vérification Google pour un usage personnel.
#### Étape 4 : Publier l'application
1. Retournez sur l'onglet **"OAuth consent screen"**
2. Cliquez sur le bouton **"PUBLISH APP"**
3. Confirmez en cliquant sur **"CONFIRM"**
⚠️ **Note importante** :
- Votre app restera en status "In production" mais **"Not verified"**
- C'est **normal et acceptable** pour un usage personnel ou interne
- Les utilisateurs verront un avertissement mais pourront cliquer sur "Advanced" > "Go to NoteFlow (unsafe)" pour continuer
- Google ne nécessite une vérification que pour les apps publiques avec beaucoup d'utilisateurs
---
## 🔧 Vérifications supplémentaires
### 1. Vérifier l'URL de redirection
Dans **APIs & Services** > **Credentials** > Votre OAuth 2.0 Client ID :
L'URL de redirection doit être **EXACTEMENT** :
```
https://note.ffnancy.fr/api/calendar/oauth-callback
```
❌ **Erreurs courantes** :
- `https://note.ffnancy.fr/api/calendar/oauth-callback/` (slash à la fin)
- `http://note.ffnancy.fr/api/calendar/oauth-callback` (http au lieu de https)
- `https://www.note.ffnancy.fr/api/calendar/oauth-callback` (www en trop)
### 2. Vérifier l'API activée
Dans **APIs & Services** > **Library** :
1. Recherchez **"Google Calendar API"**
2. Vérifiez que le status est **"ENABLED"**
3. Si ce n'est pas le cas, cliquez sur **"ENABLE"**
### 3. Vérifier les credentials dans NoteFlow
Dans NoteFlow > **Administration** > **Google Calendar** :
1. Méthode d'authentification : **OAuth 2.0**
2. Client ID Google : Doit commencer par des chiffres et finir par `.apps.googleusercontent.com`
3. Client Secret : Doit commencer par `GOCSPX-`
4. URL du site : `https://note.ffnancy.fr` (automatiquement détectée)
---
## 📋 Résumé de la solution recommandée
### Pour un usage personnel (recommandé) :
```
1. Google Cloud Console > OAuth consent screen
2. Vérifier : Publishing status = Testing
3. Ajouter michaelschal@gmail.com dans "Test users"
4. SAVE
5. Retourner sur NoteFlow et se reconnecter
```
### Pour un usage public :
```
1. Compléter toutes les informations de l'écran de consentement
2. Publier l'application (PUBLISH APP)
3. Accepter que l'app soit "Not verified" (c'est normal)
4. Les utilisateurs devront cliquer sur "Advanced" > "Continue to NoteFlow"
```
---
## ❓ Questions fréquentes
### Pourquoi Google dit que mon app n'est pas conforme ?
En mode "Testing", seuls les utilisateurs testeurs listés peuvent accéder à l'application. C'est une mesure de sécurité de Google.
### Est-ce que je dois faire vérifier mon application par Google ?
**Non**, sauf si :
- Vous avez plus de 100 utilisateurs
- Vous publiez l'application publiquement
- Vous demandez des scopes sensibles en dehors du calendrier
Pour un usage personnel ou en petite équipe, le mode "Testing" avec des testeurs est suffisant.
### Combien de testeurs puis-je ajouter ?
Jusqu'à **100 testeurs** en mode "Testing". C'est largement suffisant pour un usage personnel ou une petite entreprise.
### L'authentification expire-t-elle ?
En mode "Testing", les tokens OAuth expirent après **7 jours**. En mode "Production", ils sont permanents (jusqu'à révocation).
---
## 🆘 Besoin d'aide ?
Si le problème persiste après avoir suivi ces étapes :
1. Vérifiez les logs de l'application : `docker-compose logs -f notes-todo-app`
2. Vérifiez que vous avez attendu 5-10 minutes après les changements dans Google Cloud Console
3. Essayez en navigation privée pour éliminer les problèmes de cache
4. Déconnectez-vous de Google Calendar dans NoteFlow et reconnectez-vous
---
## 📚 Documentation supplémentaire
- [Guide complet OAuth 2.0](./OAUTH_SETUP.md)
- [Configuration Google Calendar](./GUIDE_CONFIG_OAUTH.md)
- [Google OAuth 2.0 Documentation](https://developers.google.com/identity/protocols/oauth2)