mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-11 17:29:37 +02:00
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.
This commit is contained in:
2 files changed
+181
-5
No files matched your search
@@ -0,0 +1,174 @@
|
||||
# 🚨 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)
|
||||
@@ -50,14 +50,16 @@ async function getOAuth2Client(customRedirectUri = null, req = null) {
|
||||
}
|
||||
}
|
||||
|
||||
// Utiliser l'URI personnalisée si fournie, sinon l'URL configurée, sinon l'URL détectée
|
||||
// URL par défaut en production (hardcodée pour assurer la compatibilité)
|
||||
const defaultProductionUrl = 'https://note.ffnancy.fr';
|
||||
|
||||
// Priorité: URI personnalisée > URL configurée > URL détectée > URL par défaut
|
||||
const redirectUri = customRedirectUri ||
|
||||
(appUrl?.value ? `${appUrl.value}/api/calendar/oauth-callback` : null) ||
|
||||
(detectedUrl ? `${detectedUrl}/api/calendar/oauth-callback` : null);
|
||||
(detectedUrl ? `${detectedUrl}/api/calendar/oauth-callback` : null) ||
|
||||
`${defaultProductionUrl}/api/calendar/oauth-callback`;
|
||||
|
||||
if (!redirectUri) {
|
||||
throw new Error('URL du site non configurée. Veuillez configurer l\'URL dans les paramètres (Paramètres > Google Calendar > URL du site).');
|
||||
}
|
||||
logger.info(`OAuth redirect URI utilisée: ${redirectUri}`);
|
||||
|
||||
return new google.auth.OAuth2(
|
||||
clientId.value,
|
||||
|
||||
Reference in new issue
Block a user