feat: Google Drive OAuth via http://localhost redirect (no public domain required)
- Switch redirect URI from server IP to http://localhost (works everywhere) - Add manual code exchange flow: user copies URL from browser, pastes in app - New PHP action gdrive_oauth_exchange to exchange auth code for refresh token - Fix null bug in gdrive_oauth_exchange (was read before initialization) - Add #gdrive-code-section UI with input + submit button in index.html - Update _gdriveAuthorize() to show code section and store redirect_uri - Add _gdriveSubmitCode() JS function for manual code submission - Update setup wizard and backup tab to show http://localhost as redirect URI - Add 5 new translation keys (gdrive_redirect_uri_hint, gdrive_code_title, gdrive_code_hint, gdrive_code_submit, gdrive_code_empty) in all 5 languages - Update gdrive_oauth_steps in all translations to reflect new flow - Document Google Drive OAuth setup in README.md - Dark mode: comprehensive fix for 30+ components with hardcoded light colors
This commit is contained in:
@@ -759,6 +759,53 @@
|
||||
"card_title": "♻️ Conseils zéro déchet",
|
||||
"card_hint": "Pendant la cuisson, affichez des conseils pour réutiliser les déchets produits à chaque étape (épluchures, eau de cuisson, etc.). Désactivé par défaut.",
|
||||
"label": "Afficher les conseils pendant la cuisson"
|
||||
},
|
||||
"backup": {
|
||||
"tab": "Sauvegarde",
|
||||
"local_title": "Sauvegarde locale",
|
||||
"local_hint": "Instantané quotidien de la base de données. Configurez le nombre de jours de rétention.",
|
||||
"enabled": "Activer la sauvegarde automatique quotidienne",
|
||||
"retention_days": "Rétention (jours)",
|
||||
"retention_info": "Les sauvegardes sont conservées pendant",
|
||||
"backup_now": "Sauvegarder maintenant",
|
||||
"backing_up": "Sauvegarde en cours…",
|
||||
"backed_up": "Sauvegarde terminée",
|
||||
"backup_error": "Erreur de sauvegarde",
|
||||
"last_backup": "Dernière sauvegarde",
|
||||
"no_backup_yet": "Aucune sauvegarde créée",
|
||||
"list_empty": "Aucune sauvegarde disponible",
|
||||
"restore_btn": "Restaurer",
|
||||
"restore_confirm": "Restaurer la sauvegarde",
|
||||
"delete_btn": "Supprimer",
|
||||
"delete_confirm": "Supprimer la sauvegarde",
|
||||
"gdrive_title": "Google Drive",
|
||||
"gdrive_hint": "Sauvegardez automatiquement sur Google Drive via OAuth 2.0. Aucune bibliothèque externe requise.",
|
||||
"gdrive_enabled": "Activer la sauvegarde Google Drive",
|
||||
"gdrive_folder_id": "ID du dossier Drive",
|
||||
"gdrive_folder_id_hint": "Copiez l'ID depuis l'URL du dossier Drive : …/folders/<strong>ID</strong>",
|
||||
"gdrive_retention_days": "Rétention Drive (jours, 0=tout garder)",
|
||||
"gdrive_test": "Tester la connexion",
|
||||
"gdrive_ok": "Connexion réussie !",
|
||||
"gdrive_error": "Échec de la connexion",
|
||||
"gdrive_push_now": "Téléverser sur Drive maintenant",
|
||||
"gdrive_pushing": "Téléversement en cours…",
|
||||
"gdrive_pushed": "Téléversé sur Drive",
|
||||
"gdrive_wizard_hint": "Optionnel : sauvegarde quotidienne automatique sur Google Drive via OAuth 2.0.",
|
||||
"gdrive_skip": "Passer — configurer plus tard dans Paramètres",
|
||||
"gdrive_client_id": "Client ID",
|
||||
"gdrive_client_secret": "Client Secret",
|
||||
"gdrive_redirect_uri_hint": "Ajoute <strong>http://localhost</strong> comme URI de redirection autorisé dans la Google Cloud Console. Fonctionne sur n'importe quel serveur, même sans domaine public.",
|
||||
"gdrive_code_title": "Coller l'URL ou le code d'autorisation",
|
||||
"gdrive_code_hint": "Après autorisation, le navigateur ouvre http://localhost et peut afficher une erreur de connexion — c'est normal. Copie l'URL dans la barre d'adresse (ex. <code>http://localhost/?code=4%2F0A...</code>) et colle-la ici.",
|
||||
"gdrive_code_submit": "Confirmer",
|
||||
"gdrive_code_empty": "Coller d'abord l'URL ou le code d'autorisation",
|
||||
"gdrive_redirect_uri_label": "URI de redirection (ajouter dans Google Cloud Console) :",
|
||||
"gdrive_oauth_authorize": "Autoriser avec Google",
|
||||
"gdrive_oauth_authorized": "Autorisé",
|
||||
"gdrive_oauth_not_authorized": "Pas encore autorisé",
|
||||
"gdrive_oauth_window_opened": "Fenêtre ouverte — autorisez et revenez ici",
|
||||
"gdrive_oauth_how_to": "Configurer OAuth 2.0 (étape par étape)",
|
||||
"gdrive_oauth_steps": "<li>Allez sur <a href='https://console.cloud.google.com/' target='_blank' rel='noopener'>console.cloud.google.com</a> et sélectionnez votre projet</li><li>Activez l’<strong>API Google Drive</strong> : <em>API et services → Activer les API → Google Drive API</em></li><li>Allez dans <em>API et services → Identifiants → Créer des identifiants → ID client OAuth</em></li><li>Type d’application : <strong>Application Web</strong> ; ajoutez l’URL affichée ci-dessous comme <em>URI de redirection autorisé</em></li><li>Copiez le <strong>Client ID</strong> et le <strong>Client Secret</strong> dans les champs ci-dessus et enregistrez</li><li>Cliquez sur <strong>Autoriser avec Google</strong> : connectez-vous et accordez l’accès</li><li>La fenêtre se ferme automatiquement une fois terminé et les sauvegardes sont prêtes</li>"
|
||||
}
|
||||
},
|
||||
"expiry": {
|
||||
|
||||
Reference in New Issue
Block a user