Python

Autenticazione e Gestione dei File su Google Drive con le API di Google e Python

Autenticazione e Gestione dei File su Google Drive con le API di Google e Python
LT
Luca Terribili
Autore

Questa guida descrive l’intero processo per autenticarsi su Google Drive API, leggere e scrivere file JSON, e ottimizzare la gestione dell’accesso utilizzando Python. Si partirà dalla configurazione su Google Cloud, passando per la creazione delle credenziali, fino all’installazione delle librerie necessarie e alla gestione del flusso di autenticazione.

Per utilizzare le API di Google Drive, bisogna configurare un progetto su Google Cloud Console. Il primo passo è accedere alla piattaforma andando su Google Cloud Console. Se non si è già registrati, sarà necessario creare un account Google Cloud.

Una volta effettuato l’accesso, si deve creare un nuovo progetto. Nella barra superiore della console, c’è un menu a tendina per la selezione del progetto. Cliccando su di esso, si apre una finestra con l’opzione per creare un nuovo progetto. Dopo aver scelto un nome per il progetto e confermato la creazione, sarà possibile accedere alle impostazioni del progetto stesso.

Nuovo Progetto Google Cloud

Abilitazione dell’API di Google Drive

Dopo aver creato il progetto, è necessario abilitare l’API di Google Drive. Nel menu laterale della Google Cloud Console, cliccate su Soluzioni e poi su Tutti i Prodotti. Nella scermata successiva troverete la sezione "API e servizi". Entrando in questa sezione, bisogna cercare Google Drive API nella barra di ricerca e selezionarla. Verrà visualizzata una pagina con il pulsante "Abilita", che deve essere premuto per attivare l’API nel progetto.

Creazione delle Credenziali OAuth2

Per autenticarsi su Google Drive tramite Python, servono le credenziali OAuth2. Nella stessa sezione "API e servizi", c’è un menu chiamato "Credenziali". Da qui, si può creare un nuovo set di credenziali cliccando su "Crea credenziali" e selezionando "ID client OAuth".

Durante la configurazione, Google chiede di impostare la schermata di consenso OAuth. Questa schermata è necessaria per autorizzare l’accesso all’API. Se l’applicazione è destinata solo al proprio account, si può scegliere l’opzione "Interno", altrimenti è necessario selezionare "Esterno", il che potrebbe richiedere una revisione da parte di Google prima che l’app sia accessibile ad altri utenti.

Quando viene chiesto il tipo di applicazione, bisogna selezionare "Applicazione desktop", perché Python non viene eseguito su un server remoto ma in locale. Configurate anche la voce URI di reindirizzamento autorizzati dove gli utenti verranno reindirizzati a questo percorso dopo aver eseguito l'autenticazione con Google. Al percorso verrà aggiunto il codice di autorizzazione per l'accesso. Deve avere un protocollo. Non può contenere frammenti di URL, percorsi relativi o caratteri jolly. Non può essere un indirizzo IP pubblico. Dovremmo quindi anche predisporre un DNS che punti alla porta su cui faremo girare il server di autenticazione. Per il momento, visto che il tutorial andrà provato in locale, impostiamo le voci come da immagine.

Redirect URI

Dopo aver completato la configurazione, Google genererà un client ID e un client secret, e fornirà un file JSON da scaricare. Questo file contiene le credenziali necessarie per l’autenticazione e deve essere conservato in un percorso sicuro sul computer.

Installazione delle Librerie Necessarie

Prima di poter interagire con Google Drive in Python, è necessario installare le librerie appropriate. Il pacchetto principale è google-auth, che permette di gestire l’autenticazione OAuth2. È necessario anche google-auth-oauthlib per il flusso di autenticazione e google-auth-httplib2 per la gestione delle richieste HTTP. Infine, la libreria google-api-python-client fornisce le API per accedere ai servizi di Google.

L’installazione avviene con il comando:

Loading...

Una volta completata l’installazione, si può procedere con l’implementazione dell’autenticazione e della gestione dei file su Google Drive.

Autenticazione su Google Drive con OAuth2

Dopo aver configurato il progetto su Google Cloud e installato le librerie necessarie, bisogna implementare un sistema di autenticazione che permetta di accedere a Google Drive. Il file JSON scaricato in precedenza contiene tutte le informazioni necessarie per autenticarsi tramite OAuth2.

Per evitare di dover effettuare l’autenticazione ogni volta, è opportuno salvare il token in locale. Questo permette di riutilizzarlo finché non scade, evitando di avviare il server locale di autenticazione a ogni esecuzione.

Gestione dell’Autenticazione con un Singleton

Per garantire che l’autenticazione venga eseguita una sola volta e che il token venga riutilizzato, si può implementare una classe Singleton. Il Singleton assicura che venga creata una sola istanza della classe in tutto il programma.

Questo è il codice della classe che gestisce l’autenticazione:

Loading...

Questa classe esegue il controllo se esiste già un token.json salvato. Se il file è presente, il token viene caricato e utilizzato per autenticarsi. Se il token è scaduto, viene aggiornato automaticamente. Nel caso in cui non esista alcun token, viene avviata l’autenticazione con run_local_server, che avvia un server locale e apre il browser per effettuare il login con Google.

Leggere i files all'interno di una cartella di Google Drive

Google Drive non ha una struttura di directory come un normale file system, ma utilizza identificatori univoci per ogni file e cartella. Per accedere a una cartella specifica, dobbiamo conoscere il suo id. Nel nostro caso, abbiamo creato un file JSON in cui mappiamo il nome delle cartelle ai loro rispettivi id. Questo ci permette di recuperare rapidamente il valore corretto e utilizzarlo per filtrare i file presenti in una cartella.

Per leggere i file JSON presenti in una cartella su Google Drive, dobbiamo:

  • Autenticare l'utente con le credenziali di Google Drive
  • Ottenere l'id della cartella in cui sono contenuti i file
  • Eseguire una query per recuperare tutti i file JSON nella cartella
  • Scaricare e leggere il contenuto del file

Ecco un esempio di codice per leggere i file JSON da una cartella:

Loading...

Questo codice:

  1. Ottiene l'id della cartella corrispondente al nome fornito.
  2. Recupera la lista di file JSON all'interno della cartella.
  3. Scarica e legge il contenuto di ciascun file JSON.

Scrivere un nuovo file JSON su Google Drive

Per scrivere un nuovo file JSON dentro una cartella su Google Drive, dobbiamo:

  • Verificare se esiste già un file per il mese corrente, per aggiornarlo.
  • Creare un nuovo file se non ne esiste uno attuale.

Ecco un esempio di codice per scrivere su Google Drive:

Loading...

Conclusione

Abbiamo visto come autenticarsi a Google Drive con le API, utilizzare il pattern Singleton per gestire le credenziali e come interagire con i file JSON su Google Drive. Ora possiamo:

  • Leggere i file JSON all'interno di una cartella, sfruttando l'ID della cartella.
  • Scrivere e aggiornare i file JSON in base al mese corrente, evitando di creare file duplicati.

Questo metodo garantisce un'ottima gestione dei file, evitando sovrascritture inutili e ottimizzando il recupero e la memorizzazione dei dati.

Vedi tutti →
Anteprima articolo: Introduzione a SQLAlchemy

Introduzione a SQLAlchemy

Una delle sue qualità più apprezzate è la portabilità: lo stesso codice può funzionare con SQLite, MySQL, PostgreSQL, Oracle e altri sistemi, grazie a una stringa di connessione unificata