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:
@@ -762,6 +762,53 @@
|
||||
"card_hint": "Durante la cottura, mostra consigli su come riutilizzare gli scarti prodotti in ogni passo (bucce, acqua di cottura, ecc.). Disattivo per impostazione predefinita.",
|
||||
"label": "Mostra suggerimenti durante la cottura"
|
||||
},
|
||||
"backup": {
|
||||
"tab": "Backup",
|
||||
"local_title": "Backup Locale",
|
||||
"local_hint": "Snapshot giornaliero del database. Configura quanti giorni di backup conservare.",
|
||||
"enabled": "Backup automatico quotidiano",
|
||||
"retention_days": "Giorni di retention",
|
||||
"retention_info": "I backup vengono conservati per",
|
||||
"backup_now": "Backup Ora",
|
||||
"backing_up": "Backup in corso…",
|
||||
"backed_up": "Backup completato",
|
||||
"backup_error": "Errore backup",
|
||||
"last_backup": "Ultimo backup",
|
||||
"no_backup_yet": "Nessun backup ancora eseguito",
|
||||
"list_empty": "Nessun backup disponibile",
|
||||
"restore_btn": "Ripristina",
|
||||
"restore_confirm": "Ripristinare il backup",
|
||||
"delete_btn": "Elimina",
|
||||
"delete_confirm": "Eliminare il backup",
|
||||
"gdrive_title": "Google Drive",
|
||||
"gdrive_hint": "Backup automatici su Google Drive via OAuth 2.0. Nessuna libreria esterna richiesta.",
|
||||
"gdrive_enabled": "Abilita backup Google Drive",
|
||||
"gdrive_folder_id": "ID Cartella Drive",
|
||||
"gdrive_folder_id_hint": "Copia l'ID dalla URL della cartella Drive: …/folders/<strong>ID</strong>",
|
||||
"gdrive_retention_days": "Retention Drive (giorni, 0=tutto)",
|
||||
"gdrive_test": "Testa Connessione",
|
||||
"gdrive_ok": "Connessione riuscita!",
|
||||
"gdrive_error": "Connessione fallita",
|
||||
"gdrive_push_now": "Carica Ora su Drive",
|
||||
"gdrive_pushing": "Upload in corso…",
|
||||
"gdrive_pushed": "Caricato su Drive",
|
||||
"gdrive_wizard_hint": "Opzionale: backup giornaliero automatico su Google Drive via OAuth 2.0.",
|
||||
"gdrive_skip": "Salta — configura dopo in Impostazioni",
|
||||
"gdrive_client_id": "Client ID",
|
||||
"gdrive_client_secret": "Client Secret",
|
||||
"gdrive_redirect_uri_label": "Redirect URI (da aggiungere in Google Cloud Console):",
|
||||
"gdrive_redirect_uri_hint": "Aggiungi <strong>http://localhost</strong> come URI di reindirizzamento autorizzato in Google Cloud Console. Funziona su qualsiasi server, anche senza dominio pubblico.",
|
||||
"gdrive_oauth_authorize": "Autorizza con Google",
|
||||
"gdrive_oauth_authorized": "Autorizzato",
|
||||
"gdrive_oauth_not_authorized": "Non ancora autorizzato",
|
||||
"gdrive_oauth_window_opened": "Finestra aperta — autorizza e torna qui",
|
||||
"gdrive_oauth_how_to": "Come configurare OAuth 2.0 (passo dopo passo)",
|
||||
"gdrive_oauth_steps": "<li>Vai su <a href='https://console.cloud.google.com/' target='_blank' rel='noopener'>console.cloud.google.com</a> e seleziona il progetto</li><li>Abilita la <strong>Google Drive API</strong>: <em>API e servizi → Abilita API → Google Drive API</em></li><li>Vai su <em>API e servizi → Credenziali → Crea credenziali → ID client OAuth 2.0</em></li><li>Tipo applicazione: <strong>Applicazione web</strong>; aggiungi <strong>http://localhost</strong> come <em>URI di reindirizzamento autorizzato</em></li><li>Copia <strong>Client ID</strong> e <strong>Client Secret</strong> nei campi qui sopra e salva</li><li>Clicca <strong>Autorizza con Google</strong>, accedi e concedi l'accesso</li><li>Il browser aprirà <code>http://localhost</code> (possibile errore di connessione è normale): copia l'URL dalla barra degli indirizzi e incollalo nel campo che appare qui sotto</li>",
|
||||
"gdrive_code_title": "Incolla l'URL o il codice di autorizzazione",
|
||||
"gdrive_code_hint": "Dopo aver autorizzato, il browser aprirà http://localhost e potrebbe mostrare un errore. Copia l'URL dalla barra degli indirizzi (es. <code>http://localhost/?code=4%2F0A...</code>) e incollalo qui.",
|
||||
"gdrive_code_submit": "Conferma",
|
||||
"gdrive_code_empty": "Incolla prima l'URL o il codice di autorizzazione"
|
||||
},
|
||||
"info": {
|
||||
"tab": "Info",
|
||||
"ai_title": "Gemini AI — Utilizzo Token",
|
||||
|
||||
Reference in New Issue
Block a user