Informazioni su questo codelab
1. Utilizzo delle API Google Workspace
Questo codelab ti introduce all'utilizzo delle API RESTful basate su HTTP di Google Workspace (in precedenza G Suite). L'esempio sarà fatto in Python per brevità e disponibilità, ma puoi anche scegliere di utilizzare il tuo linguaggio di sviluppo preferito. Sarai esposto ad argomenti introduttivi, quali come utilizzare la Developer Console per creare/gestire i progetti, come ottenere le credenziali di autorizzazione e installare le librerie client dell'API. Una volta eseguite le formalità, scriverai un'app per visualizzare i primi 100 file e cartelle di Google Drive mediante la relativa API.
Obiettivi didattici
- Creare un progetto utilizzando Google/Cloud Developers Console
- Ottieni e utilizzare le credenziali dell'applicazione OAuth2 nella tua app
- Scopri di più sull'utilizzo delle librerie client delle API di Google
- Scrivere applicazioni utilizzando Google & API Google Workspace
- Ottenere informazioni su file e cartelle con l'API Google Drive
Che cosa ti serve
- Accesso a internet e a un browser web
- Un Account Google (gli account Google Workspace possono richiedere l'approvazione di un amministratore)
- Familiarità con i sistemi compatibili con POSIX, come Linux e Mac OS X
- Possibilità di creare file sorgente con un editor di codice o i comandi shell.
- Competenze di base in Python (2 o 3), ma puoi utilizzare qualsiasi linguaggio supportato
- Alcuni file e/o cartelle nel tuo Google Drive
2. Sondaggio
Come utilizzerai questo tutorial codelab?
Come valuteresti la tua esperienza con gli strumenti per sviluppatori di Google Workspace e API?
3. Panoramica
In questo codelab, imparerai a:
- Scarica la libreria client delle API di Google per Python
- Crea un nuovo progetto in Google/Cloud Developers Console
- Ottenere le credenziali necessarie per l'app
- Utilizza queste credenziali per accedere all'API Google Drive
Se preferisci non utilizzare Python, puoi implementare il codelab nel tuo strumento di sviluppo preferito (le librerie client dei linguaggi supportati sono disponibili qui) e fare semplicemente riferimento agli esempi Python come pseudocodice (eseguibile).
4. Conferma l'ambiente Python
Questo codelab richiede l'uso del linguaggio Python (sebbene molti linguaggi siano supportati dalle librerie client delle API di Google, quindi non esitare a creare qualcosa di equivalente nel tuo strumento di sviluppo preferito e usa semplicemente il Python come pseudocodice). In particolare, questo codelab supporta Python 2 e 3, ma consigliamo di passare alla versione 3.x il prima possibile.
Cloud Shell è una soluzione pratica disponibile per gli utenti direttamente dalla console Cloud e non richiede un ambiente di sviluppo locale, quindi questo tutorial può essere svolto completamente nel cloud con un browser web. Cloud Shell è particolarmente utile se stai sviluppando o prevedi di continuare a sviluppare con prodotti GCP e su quelle di livello inferiore. In particolare per questo codelab, Cloud Shell ha già preinstallato entrambe le versioni di Python.
Su Cloud Shell è anche installato IPython... si tratta di un interprete Python interattivo di livello superiore che consigliamo, soprattutto se fai parte della community di data science o machine learning. In caso affermativo, IPython è l'interprete predefinito per i blocchi note Jupyter e per Colab, i blocchi note Jupyter ospitati da Google Research.
IPython favorisce prima un interprete Python 3, ma utilizza Python 2 se 3.x non è disponibile. È possibile accedere a Python da Cloud Shell, ma anche in un ambiente di sviluppo locale. Esci con ^D (Ctrl-d) e accetta l'offerta di uscire. L'output di esempio della fase ipython
iniziale sarà il seguente:
$ ipython Python 3.7.3 (default, Mar 4 2020, 23:11:43) Type 'copyright', 'credits' or 'license' for more information IPython 7.13.0 -- An enhanced Interactive Python. Type '?' for help. In [1]:
Se IPython non è la tua preferenza, l'uso di un interprete interattivo Python standard (Cloud Shell o il tuo ambiente di sviluppo locale) è perfettamente accettabile (anche con ^D):
$ python Python 2.7.13 (default, Sep 26 2018, 18:42:22) [GCC 6.3.0 20170516] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> $ python3 Python 3.7.3 (default, Mar 10 2020, 02:33:39) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
Il codelab presuppone anche che tu abbia lo strumento di installazione pip
(gestore di pacchetti Python e resolver di dipendenze). Viene fornito in bundle con le versioni 2.7.9+ o 3.4+. Se hai una versione precedente di Python, consulta questa guida per le istruzioni di installazione. A seconda delle tue autorizzazioni, potrebbe essere necessario disporre dell'accesso sudo
o come super user, ma in genere non è così. Puoi anche utilizzare esplicitamente pip2
o pip3
per eseguire pip
per versioni Python specifiche.
La parte restante del codelab presuppone che tu stia utilizzando Python 3: verranno fornite istruzioni specifiche per Python 2 se differiscono in modo significativo da 3.x.
*Creare e utilizzare ambienti virtuali
Questa sezione è facoltativa ed è obbligatoria solo per chi deve utilizzare un ambiente virtuale per questo codelab (come indicato nella barra laterale di avviso in alto). Se sul computer è installato solo Python 3, puoi inviare questo comando per creare un virtualenv denominato my_env
(puoi scegliere un altro nome, se necessario):
virtualenv my_env
Tuttavia, se utilizzi sia Python 2 sia 3 sul tuo computer, ti consigliamo di installare un virtualenv Python 3, che puoi fare con -p flag
in questo modo:
virtualenv -p python3 my_env
Inserisci il virtualenv appena creato "attivando" nel seguente modo:
source my_env/bin/activate
Conferma di trovarti nell'ambiente osservando che il prompt della shell è ora preceduto dal nome dell'ambiente, ad esempio
(my_env) $
Ora dovresti essere in grado di pip install
tutti i pacchetti richiesti, eseguire il codice all'interno di questo eivonment e così via. Un altro vantaggio è che se lo scomponi completamente, entri in una situazione in cui la tua installazione Python è danneggiata e così via, puoi soffiare via questo intero ambiente senza influire sul resto del sistema.
5. Installa la libreria client delle API di Google per Python
Questo codelab richiede l'utilizzo della libreria client delle API di Google per Python, quindi è un semplice processo di installazione oppure potresti non dover fare nulla.
In precedenza ti abbiamo consigliato di utilizzare Cloud Shell per praticità. Puoi completare l'intero tutorial da un browser web nel cloud. Un altro motivo per utilizzare Cloud Shell è che molti degli strumenti di sviluppo più diffusi e delle librerie necessarie sono già preinstallati.
*Installare le librerie client
(Facoltativo) Puoi saltare questa operazione se utilizzi Cloud Shell o un ambiente locale in cui hai già installato le librerie client. Devi eseguire questa operazione solo se stai sviluppando in locale e non hai (o non sei sicuro di averla) installata. Il modo più semplice è utilizzare pip
(o pip3
) per eseguire l'installazione (incluso l'aggiornamento di pip
, se necessario):
pip install -U pip google-api-python-client oauth2client
Conferma installazione
Questo comando installa la libreria client e gli eventuali pacchetti da cui dipende. Che tu stia utilizzando Cloud Shell o il tuo ambiente, verifica che la libreria client sia installata importando i pacchetti necessari e conferma che non siano presenti errori di importazione (né output):
python3 -c "import googleapiclient, httplib2, oauth2client"
Se invece utilizzi Python 2 (da Cloud Shell), riceverai un avviso che ti informa che il relativo supporto è stato deprecato:
******************************************************************************* Python 2 is deprecated. Upgrade to Python 3 as soon as possible. See https://cloud.google.com/python/docs/python2-sunset To suppress this warning, create an empty ~/.cloudshell/no-python-warning file. The command will automatically proceed in seconds or on any key. *******************************************************************************
Ora che puoi eseguire il "test" di importazione (nessun errore/output), puoi iniziare a parlare con le API di Google.
Riepilogo
Poiché questo è un codelab introduttivo, si presume che tu sia alle prime armi con l'utilizzo delle API Google e Google Workspace. Se hai già esperienza nella creazione di progetti e di autorizzazioni utente "ID client OAuth", In tal caso, crea o riutilizza un progetto esistente, crea o riutilizza un ID client OAuth esistente, salta i due moduli successivi e vai direttamente a "Visualizzare i file di Drive e applicazione cartelle" oppure passare direttamente all'opzione "Utilizzo avanzato di devconsole" per rivedere questi passaggi senza indicazioni.
6. Specifica il progetto nella console Cloud
Un'applicazione che utilizza le API di Google richiede un progetto. Questi vengono gestiti in Google Cloud Developers Console o semplicemente "devconsole". In questo codelab utilizzeremo solo l'API Google Drive, quindi abbiamo un link magico (di seguito nel passaggio 1) che:
- Passa a devconsole
- Ti guida nella creazione di un nuovo progetto (o nella scelta di un progetto esistente) e
- Abilita Automagically l'API Drive
Fallo!
- Passa a console.developers.google.com/start/api?id=drive e accedi al tuo Account Google.
- Se non hai ancora progetti, visualizzerai questa schermata per accettare i Termini di servizio delle API di Google:
Una volta accettati i termini, verrà creato un nuovo progetto denominato "Il mio progetto" e l'API Drive sarà abilitata automaticamente. 3. Se invece hai già creato un progetto (forse il tuo codelab precedente?), visualizzerai questa schermata:
Quando fai clic sul menu a discesa Crea un progetto, scegli un progetto esistente o creane uno nuovo.
Una volta effettuata la selezione (progetto nuovo o esistente), l'API Drive verrà abilitata automaticamente. 4. Tieni presente che l'API Drive è stata abilitata con questa conferma:
5. Fai clic su Vai alle credenziali per andare al passaggio successivo.
7. *Autorizzare le richieste API (autorizzazione dell'utente)
Puoi saltare questa sezione se hai già creato le credenziali di autorizzazione dell'account utente e hai familiarità con la procedura. È diversa dall'autorizzazione dell'account di servizio, la cui tecnica è diversa, quindi continua di seguito.
Introduzione all'autorizzazione (oltre ad alcune autenticazione)
Per effettuare richieste alle API, la tua applicazione deve disporre dell'autorizzazione adeguata. Autenticazione, una parola simile, descrive le credenziali di accesso: quando accedi al tuo Account Google con credenziali di accesso e password. Una volta eseguita l'autenticazione, il passaggio successivo consiste nel capire se sei, o meglio il tuo codice, autorizzato ad accedere a dati, ad esempio i file BLOB su Cloud Storage o i file personali di un utente su Google Drive.
Le API di Google supportano diversi tipi di autorizzazione, ma quello più comune per gli utenti dell'API Google Workspace è l'autorizzazione utente, poiché l'applicazione di esempio in questo codelab accede ai dati appartenenti agli utenti finali. Questi utenti finali devono concedere alla tua app l'autorizzazione ad accedere ai proprietari. Questo significa che il codice deve ottenere le credenziali OAuth2 dell'account utente.
Per ottenere le credenziali OAuth2 per l'autorizzazione utente, torna al gestore API e seleziona "Credenziali" scheda nel menu di navigazione sinistro:
Una volta lì, vedrai tutte le tue credenziali in tre sezioni separate:
Il primo riguarda le chiavi API, il secondo ID client OAuth 2.0 e gli ultimi account di servizio OAuth2. Utilizziamo quello centrale.
Creazione delle credenziali
Nella pagina Credenziali, fai clic sul pulsante + Crea credenziali in alto. Viene visualizzata una finestra di dialogo in cui puoi scegliere "ID client OAuth":
Nella schermata successiva sono presenti due azioni: la configurazione della "schermata di consenso" per l'autorizzazione dell'app e scegli il tipo di applicazione:
Se non hai impostato una schermata per il consenso, vedrai l'avviso nella console e dovrai farlo ora. Salta questi passaggi successivi se la schermata per il consenso è già stata configurata.
Schermata consenso OAuth
Fai clic su "Configura schermata per il consenso" e seleziona "Esterno" (o "Interno" se sei un cliente Google Workspace [in precedenza "Google Workspace"]):
Tieni presente che ai fini di questo esercizio, la scelta non è importante perché non stai pubblicando l'esempio del codelab. La maggior parte degli utenti seleziona "Esterni" a una schermata più complessa, ma devi compilare solo il campo "Nome applicazione" campo in alto:
Al momento ti serve solo il nome di un'applicazione, quindi scegli qualcuno che rispecchi il codelab che stai facendo e fai clic su Salva.
Creazione dell'ID client OAuth (autenticazione account utente)
Ora torna alla scheda Credenziali per creare un ID client OAuth2. Qui vedrai una serie di ID client OAuth che puoi creare:
Stiamo sviluppando uno strumento a riga di comando, Altro, quindi sceglilo e fai clic sul pulsante Crea. Scegli un nome ID client che rifletta l'app che stai creando o scegli semplicemente il nome predefinito, che in genere è "Altro client N".
Salvataggio delle credenziali in corso...
- Viene visualizzata una finestra di dialogo con le nuove credenziali. fai clic su OK per chiudere
- Torna alla pagina Credenziali, scorri verso il basso fino a "ID client OAuth2" individua e fai clic sull'icona di download
all'estrema destra dell'ID client appena creato.
- Si apre una finestra di dialogo per salvare un file denominato
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
, probabilmente nella tua cartella Download. Ti consigliamo di accorciarlo con un nome più semplice comeclient_secret.json
(che è quello utilizzato dall'app di esempio), quindi salvarla nella directory/cartella in cui creerai l'app di esempio in questo codelab.
Riepilogo
Ora puoi accedere all'API Drive dalla tua app con le credenziali. Tieni presente che lo scopo dell'ID client OAuth è che gli utenti devono concedere alla tua app l'autorizzazione ad accedere ai proprietari di Google Drive.
NOTA: ulteriori dettagli su come creare progetti, abilitare le API e ottenere le credenziali manualmente, ovvero senza utilizzare la procedura guidata di cui sopra, è disponibile dopo la conclusione di questo codelab per ulteriori studi.
8. Visualizzazione dei file di Drive e applicazione cartelle
Sia nel tuo ambiente di sviluppo locale che in Cloud Shell, nella stessa directory in cui si trova il file delle credenziali di client_id.json
, crea un nuovo file Python denominato drive_list.py
e aggiungi le righe di codice seguenti:
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
Struttura dell'applicazione
Questa applicazione include tre sezioni principali:
- Importazione di Python per inserire le funzionalità della libreria
- Ottenere le credenziali dell'applicazione
- Recupera file & nomi delle cartelle & tipi MIME nel Google Drive e Rete Display
NOTA: dopo la conclusione di questo codelab per ulteriori approfondimenti, è possibile approfondire il codice ed esaminare una spiegazione riga per riga.
Esecuzione dell'applicazione
Assegna a questo file un nome simile a drive_list.py
. La prima volta che esegui lo script, questo non avrà l'autorizzazione ad accedere ai file dell'utente sul Drive (tuo). Con l'esecuzione in pausa, l'output è simile al seguente:
$ python3 ./drive_list.py /usr/local/lib/python3.6/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory warnings.warn(_MISSING_FILE_MESSAGE.format(filename)) Your browser has been opened to visit: https://accounts.google.com/o/oauth2/auth?client_id=LONG-STRING.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code If your browser is on a different machine then exit and re-run this application with the command-line parameter --noauth_local_webserver
Dall'ambiente di sviluppo locale
Lo script della riga di comando viene messo in pausa quando si apre una finestra del browser e ti presenta la finestra di dialogo delle autorizzazioni OAuth2:
È qui che l'applicazione chiede all'utente le autorizzazioni richieste dal codice (tramite la variabile SCOPES
). In questo caso, si tratta della possibilità di visualizzare i metadati del file dal Google Drive dell'utente. Sì, nel tuo codice questi ambiti di autorizzazione vengono visualizzati come URI, ma sono tradotti nella lingua specificata dalle impostazioni internazionali nella finestra di dialogo del flusso OAuth2. L'utente deve fornire un'autorizzazione esplicita per le autorizzazioni richieste, altrimenti "esegui flusso" parte del codice genererà un'eccezione e lo script non procede oltre.
NOTA: alcuni utenti utilizzano più browser e la richiesta di autorizzazione potrebbe apparire in un browser non preferito. In questo caso, copia l'intero URL dalla finestra del browser che non vuoi utilizzare e incollalo nella barra degli indirizzi del browser che vuoi usare.
Da Cloud Shell
Se non stavi facendo attenzione ed esegui il programma in Cloud Shell, non si è aperta alcuna finestra del browser, il che ti impedisce di parlare. Il messaggio di diagnostica in basso era rivolto a te... questo:
If your browser is on a different machine then exit and re-run this application with the command-line parameter --noauth_local_webserver
Se lo esegui in questo modo, verrà visualizzato invece il seguente output:
$ python3 drive_list.py --noauth_local_webserver /usr/local/lib/python3.7/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory warnings.warn(_MISSING_FILE_MESSAGE.format(filename)) Go to the following link in your browser: https://accounts.google.com/o/oauth2/auth?client_id=xxx.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code Enter verification code:
Seguendo le istruzioni e andando in un'altra scheda del browser con quell'URL, avrai un'esperienza quasi identica a quella descritta sopra per gli ambienti di sviluppo locali. La differenza principale è alla fine, dove viene visualizzata un'altra schermata con il codice di verifica da inserire in Cloud Shell:
Taglia e incolla questo codice nella finestra del terminale.
Riepilogo
Dopo che l'utente fa clic su Consenti e/o il codice di verifica è stato incollato nella richiesta, l'app continuerà a essere eseguita, quindi aspettati di vedere un output composto da file/cartelle di Drive e relativi tipi MIME. Ecco un esempio da uno dei nostri account di prova:
$ python3 ./drive_list.py Travel expenses application/vnd.google-apps.spreadsheet Gmail Add-ons codelab application/vnd.google-apps.script Google Workspace Developer Intro application/vnd.google-apps.presentation Baseball Sheets application/vnd.google-apps.folder My Resume application/vnd.google-apps.document . . .
Nelle esecuzioni successive noterai che non ti viene più richiesta l'autorizzazione (poiché è stata memorizzata nella cache dalle librerie di autenticazione) e passi direttamente all'output. Non è entusiasmante vedere i documenti in un terminale per la prima volta? Pensiamo di sì!
9. Conclusione
Ora puoi scoprire altre funzionalità dell'API Drive o esplorare altri Google Workspace (Gmail, Documenti, Fogli, Presentazioni, Calendar) e altre API di Google (Maps, Analytics, YouTube ecc.). Congratulazioni per aver completato il sondaggio fino alla fine.
Il codice utilizzato in questo codelab è disponibile anche nel relativo repository GitHub all'indirizzo github.com/googlecodelabs/gsuite-apis-intro. Il nostro obiettivo è mantenere questo codelab sincronizzato con il repository. Vuoi proseguire? Di seguito sono riportate varie risorse a cui puoi accedere per approfondire il materiale trattato in questo codelab o per esplorare altri modi di accedere alle tecnologie Google in modo programmatico.
Come suggerito in precedenza, se non sei un normale sviluppatore Python, ti invitiamo a ripetere questo esempio di codelab nel tuo linguaggio di sviluppo preferito. Le librerie client per i linguaggi supportati sono disponibili qui.
Studio aggiuntivo
Ora che hai una certa esperienza con l'API Drive, di seguito sono riportati alcuni esercizi consigliati per sviluppare ulteriormente le tue competenze:
- File ZIP: scrivi un'applicazione che esegue il backup di più archivi ZIP su Drive, decomprimendoli all'istante in modo che il nome di ogni file ZIP corrisponda al nome della cartella in cui si trovano i file. CREDITO AGGIUNTIVO: supporta archivi ZIP ricorsivi all'interno di altri file ZIP con cartelle di Drive incorporate in altre cartelle. Se ti rinunci, vedi questa app Node.js di esempio.
- Album fotografici: scrivi l'inizio di uno strumento di generazione di album fotografici che carica più immagini su Google Drive, organizzandole in cartelle separate per timestamp e geolocalizzazione. CREDITO AGGIUNTIVO: trova una libreria open source per la manipolazione delle immagini e unisci tutte le foto in ogni cartella per rappresentare gli eventi che potresti aver vissuto (un viaggio, una cena e così via).
- Esplora Google Cloud: scrivi un'app che collega Google Workspace e Google Cloud Platform (Google Cloud). Scrivere uno strumento che esegua il backup dei file immagine da Google Drive a Google Cloud Storage (GCS), un altro "archiviazione di file nel cloud" soluzione. Che tu ci creda o no, utilizzare GCS sarà più semplice di Drive grazie alle sue librerie client avanzate.
- Analisi e record: estendi la tua soluzione al punto 3 analizzando ogni immagine di cui è stato eseguito il backup passando all'API Google Cloud Vision e ottenendo le migliori (3, 5, 10) "etichette" di ciò che l'API vede in queste immagini. Per ogni immagine, scrivi una riga in un foglio Google contenente l'analisi di Cloud Vision e la posizione di cui hai eseguito il backup su GCS. Se ti rinunci, consulta questo codelab Python.
10. Risorse aggiuntive
Documentazione
- Documentazione dell'API Google Drive (API REST e SDK/API nativi Android)
- Altra documentazione sulle API Google Workspace
- Altra documentazione sulle API di Google
- Librerie client delle API di Google
- Documentazione di OAuth2
Video correlati e generali
- Creazione di nuovi progetti API di Google ( post del blog e video)
- Revisione del codice boilerplate dell'autorizzazione Python ( video)
- Elencare i tuoi file su Google Drive ( video, post del blog)
- Raccolta video dell'API Google Drive
- Serie di video online Launchpad (dal predecessore a...)
- Serie di video del programma Google Workspace Dev Show
Notizie e aggiornamenti
- Google Workspace blog per sviluppatori
- Sviluppatori Google Workspace Twitter (@GSuiteDevs)
- Newsletter mensile per gli sviluppatori di Google Workspace
Altri codelab
Introduttivo
- [Apps Script] Introduzione a Google Apps Script
Intermedio
- [Apps Script] Strumento a riga di comando CLASP Apps Script
- [Apps Script] Componenti aggiuntivi di Gmail
- [Apps Script] Componente aggiuntivo di Documenti e API Google Cloud Natural Language
- [Apps Script] Struttura dei bot di Hangouts Chat
- [API REST] Strumento di generazione di report personalizzati (API Fogli)
- [API REST] Generatore di slide personalizzato per l'analizzatore BigQuery licenza GitHub (Presentazioni + API BigQuery)
Avanzate
- [API REST] Flusso di lavoro di elaborazione delle immagini cloud (Drive, Cloud Storage, Cloud Vision, API Fogli)
App di riferimento
- Convertitore Markdown-to-Presentazioni Google (API REST di Presentazioni)
11. *Spiegazione dettagliata dell'applicazione
Questa sezione facoltativa deve essere utilizzata come auto-apprendimento al termine della sessione per colmare le eventuali lacune che potrebbero essere emerse o per ulteriori ricerche.
Importazione di Python per includere le funzionalità della libreria
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
- La prima istruzione
import
consente l'esecuzione di questo codice su Python 2, ma può essere eliminato completamente se utilizzi esclusivamente Python 3. - Una linea guida di stile Python prevede la separazione delle importazioni di librerie standard da quelle di moduli di terze parti ed è a questo scopo la riga vuota.
- Nelle prossime tre importazioni verranno aggiunte le classi e dalla libreria client delle API di Google... sono tutte necessarie per scrivere questa app. In breve, ecco cosa fanno:
googleapiclient
si concentra sulla connessione alle API di Googlehttplib2
fornisce un client HTTP che l'app può utilizzareoauth2client
ci aiuta a gestire le credenziali OAuth2
Autorizzazione e recupero delle credenziali dell'applicazione
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
- L'applicazione
SCOPES
è le autorizzazioni che un'app chiederà all'utente che la esegue. Per proteggere i dati utente, le app non possono essere eseguite senza ottenere l'autorizzazione - Una best practice consiste nell'utilizzare le autorizzazioni più restrittive necessarie per il funzionamento dell'app. Perché?
- Non è fastidioso quando un'app richiede un gran numero di autorizzazioni quando la installi o la esegui? Indovina? Ora sei dall'altra parte della moneta e stai chiedendo agli utenti tutte queste autorizzazioni. Se utilizzi ambiti più restrittivi, gli utenti potranno installare la tua app in modo più consapevole, perché è richiesto un accesso più ridotto.
- La maggior parte degli ambiti ha l'aspetto di URL lunghi, e l'ambito dei metadati di Drive non fa eccezione.
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
- È necessario un token per consentire alle app di comunicare con i server di Google. I token validi ricevuti da Google verranno salvati nel file di archiviazione dei token,
storage.json
. Se non salvi questi token, dovrai autorizzare nuovamente l'app ogni volta che la esegui.
store = file.Storage('storage.json')
- Questa app verifica innanzitutto se disponiamo già di credenziali valide nello spazio di archiviazione (vedi l'istruzione condizionale
if
).
creds = store.get()
if not creds or creds.invalid:
- Se non hai credenziali o se sono scadute, devi creare un nuovo flusso di autorizzazione [tramite
oauth2client.client.flow_from_clientsecrets()
] dal tuo ID client OAuth e secret nel fileclient_id.json
che hai scaricato].
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
- Una volta che l'app ha un flusso, deve essere eseguito per presentare la schermata delle autorizzazioni OAuth2 all'utente [tramite
oauth2client.tools.run_flow()
] descritta e illustrata sopra.
creds = tools.run_flow(flow, store)
- Se fai clic su Consenti, gli utenti acconsentono che l'app acceda ai metadati dei file di Google Drive e i server di Google restituiscono token per accedere all'API. Vengono restituiti come
creds
e memorizzati nella cache nel filestorage.json
. - A questo punto, la tua app dispone di credenziali valide per effettuare chiamate API. La chiamata a
googleapiclient.discovery.build()
crea un endpoint di servizio per l'API che stai utilizzando. - Per utilizzare
build()
, inserisci il nome dell'API ('drive'
) e versione desiderata (attualmente'v3'
). - Il parametro finale è un client HTTP da utilizzare per le chiamate API criptate.
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
Recupera e visualizzare i primi 100 file/cartelle di Drive e MIMEtypes)
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
- La riga di codice successiva chiama il metodo
list()
nella raccoltafiles()
per consentire all'API Drive di creare la richiesta, che viene chiamata immediatamente conexecute()
. Viene restituito undict
Python, da cui chiediamo la chiave'files'
per ottenere il file 100 & i nomi delle cartelle dal Google Drive dell'utente (o meno se hai meno file). - Perché 100? Questa è l'impostazione predefinita di
DRIVE.files().list()
. Se vuoi modificare questo numero, ad esempio inserendo solo 10 file o 1000, aggiungi il parametropageSize
alla richiesta:DRIVE.files().list(pageSize=10)
. Per ulteriori opzioni, consulta la documentazione. - La parte finale dello script si ripete in ogni file, visualizzando i nomi e MIMEtypes del file.
Hai scritto la tua prima applicazione che utilizza un'API REST Google. Congratulazioni. A parte le importazioni e il codice di autorizzazione, questo script è in realtà solo un paio di righe di codice (quello che vedi sopra). La maggior parte delle API di Google funziona in modo simile e dovresti creare solo endpoint di servizio per ogni API che vuoi utilizzare.
Utilizzare più di un'API di Google in un'app
Sì, puoi certamente utilizzare più di un'API nella stessa app. Ecco uno snippet di codice Python per un'app che riutilizza lo stesso client HTTP e crea endpoint di servizio per tre API di Google (sì, anche con tre diverse SCOPES
):
SCOPES = (
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/spreadsheets.readonly',
'https://www.googleapis.com/auth/presentations',
)
. . .
HTTP = creds.authorize(Http())
DRIVE = discovery.build('drive', 'v3', http=HTTP)
SHEETS = discovery.build('sheets', 'v4', http=HTTP)
SLIDES = discovery.build('slides', 'v1', http=HTTP)
Immaginiamo che questo codice possa far parte di un'app che genera più presentazioni (API Presentazioni) in base ai dati di un foglio di lavoro (API Fogli) e utilizza un modello di slide che viene copiato (API Drive) per ogni presentazione generata. Sebbene un'app di questo tipo non esista, dovresti essere in grado di crearne una simile utilizzando due esempi esistenti creati dal team di Google Workspace come componenti di base:
- Sostituzione di testo e immagini nelle slide ( post del blog e video): utilizza l'API Drive per copiare una presentazione di modelli, quindi utilizza l'API Presentazioni per modificare il testo e segnaposto immagine
- Generare slide dai dati di un foglio di lavoro ( post del blog e video): legge i dati da un foglio di lavoro (API Fogli) e crea slide (API Presentazioni) in base a tali dati.
La tua sfida: creare l'app.
12. *Utilizzo avanzato di devconsole
In questa sezione facoltativa, descriviamo come creare progetti in devconsole, abilitare le API e ottenere le credenziali, il tutto senza usare la procedura guidata come indicato in precedenza nel codelab. Si rivolge agli utenti intermedi abbastanza propensi a farlo manualmente o che vogliono imparare a farlo.
Specifica il progetto nella console Cloud
Ogni volta che scrivi un'applicazione utilizzando le API di Google, devi avere un progetto. Puoi riutilizzare un progetto esistente o crearne uno nuovo. Ciò avviene nella console Cloud. Alcuni codelab forniscono un link magico (come una configurazione guidata) che ti consente di iniziare rapidamente, saltando molti dei passaggi necessari. Tuttavia, non tutti lo fanno, quindi queste istruzioni sono intese come istruzioni generali su come creare progetti.
Puoi creare progetti dalla maggior parte delle schermate della console Cloud, purché tu abbia eseguito l'accesso con le tue credenziali Google e visualizzi il menu a discesa dei progetti nella parte superiore della console. Tieni presente che la maggior parte degli screenshot qui vengono acquisiti dal gestore API, noto anche come Developers Console, che è facilmente raggiungibile facendo clic su "Gestore API" nel menu di navigazione a sinistra o visitando direttamente il sito console.developers.google.com.
- Se non hai ancora progetti, potresti essere indirizzato a...
- pagina Dashboard:
- pagina Raccolta:
- oppure una pagina completamente vuota:
Se ti trovi in questa terza situazione, aggiorna il browser per visualizzare la pagina Libreria.
- Nelle pagine Dashboard o Libreria, fai clic sul selettore progetti nella parte superiore della pagina:
- Viene visualizzata la finestra di dialogo del selettore. Fai clic sul segno "+" a destra per creare un nuovo progetto:
- Dopo aver fatto clic su "+", visualizzerai una pagina Nuovo progetto. Per impostazione predefinita, tutti gli account consumer ricevono 12 progetti. Prima di creare il tuo primo progetto, devi accettare i Termini di servizio delle API di Google:
Una volta eseguita questa operazione, quando creerai progetti futuri, non potrai più inviare la richiesta via email e le domande sui Termini di servizio:
5. Se hai creato almeno un progetto in passato, dopo l'accesso verrà visualizzata la dashboard dell'ultimo progetto su cui hai lavorato. Da qui, crea un nuovo progetto come sceglieresti Seleziona un progetto > +. 6. Una volta creato il nuovo progetto, tornerai nella pagina Dashboard:
A questo punto hai creato un progetto e puoi procedere scegliendo le API da utilizzare per il progetto.
Abilita le API di Google
Per poter iniziare a utilizzare le API di Google, devi prima abilitarle. L'esempio seguente mostra come abilitare l'API Cloud Vision. In questo codelab, potresti utilizzare una o più API e dovresti seguire passaggi simili per abilitarle prima dell'utilizzo.
Da Cloud Shell
Tramite Cloud Shell, puoi abilitare l'API con il comando seguente:
gcloud services enable vision.googleapis.com
Dalla console Cloud
Puoi anche abilitare l'API Vision nel gestore API. Nella console Cloud, vai al Gestore API e seleziona "Libreria".
Nella barra di ricerca, inizia a digitare "visione" quindi seleziona API Vision quando viene visualizzata. Mentre digiti, il codice potrebbe avere il seguente aspetto:
Seleziona l'API Cloud Vision per visualizzare la finestra di dialogo visualizzata di seguito, quindi fai clic su "Abilita" Pulsante:
Costo
Molte API di Google possono essere utilizzate senza costi, ma l'uso di Google Cloud (prodotti e API) non è senza costi. Quando abiliti l'API Vision (come descritto in precedenza), ti potrebbe essere richiesto di creare un account di fatturazione attivo. L'utente deve fare riferimento alle informazioni sui prezzi dell'API Vision prima dell'attivazione. Tieni presente che alcuni prodotti Google Cloud Platform (Google Cloud) offrono la funzione " Always Free" che devi superare per incorrere nella fatturazione. Ai fini del codelab, ogni chiamata all'API Vision viene conteggiata ai fini del livello senza costi e, se rimani entro i limiti aggregati (entro ogni mese), non ti verrà addebitato alcun costo.
Alcune API di Google, ovvero L'utilizzo di Google Workspace è coperto da un abbonamento mensile, quindi non è prevista alcuna fatturazione diretta per l'utilizzo, ad esempio, delle API Gmail, Google Drive, Calendar, Documenti, Fogli e Presentazioni. I vari prodotti Google vengono fatturati in modo diverso, quindi assicurati di fare riferimento alla documentazione dell'API per queste informazioni.
Riepilogo
In questo codelab devi solo attivare l'API Google Drive, quindi segui le istruzioni riportate sopra e cerca "Drive". Procedi dopo l'attivazione.
Autorizzazione delle richieste API (autorizzazione dell'utente)
Introduzione all'autorizzazione (oltre ad alcune autenticazione)
Per effettuare richieste alle API, la tua applicazione deve disporre dell'autorizzazione adeguata. Autenticazione, una parola simile, descrive le credenziali di accesso: quando accedi al tuo Account Google con credenziali di accesso e password. Una volta eseguita l'autenticazione, il passaggio successivo consiste nel capire se sei, o meglio il tuo codice, autorizzato ad accedere a dati, ad esempio i file BLOB su Cloud Storage o i file personali di un utente su Google Drive.
Le API di Google supportano diversi tipi di autorizzazione, ma quello più comune per gli utenti dell'API Google Workspace è l'autorizzazione utente, poiché l'applicazione di esempio in questo codelab accede ai dati appartenenti agli utenti finali. Questi utenti finali devono concedere alla tua app l'autorizzazione ad accedere ai proprietari. Questo significa che il codice deve ottenere le credenziali OAuth2 dell'account utente.
Per ottenere le credenziali OAuth2 per l'autorizzazione utente, torna al gestore API e seleziona "Credenziali" scheda nel menu di navigazione sinistro:
Una volta lì, vedrai tutte le tue credenziali in tre sezioni separate:
Il primo riguarda le chiavi API, il secondo ID client OAuth 2.0 e gli ultimi account di servizio OAuth2. Utilizziamo quello centrale.
Creazione delle credenziali
Nella pagina Credenziali, fai clic sul pulsante + Crea credenziali in alto. Viene visualizzata una finestra di dialogo in cui puoi scegliere "ID client OAuth":
Nella schermata successiva sono presenti due azioni: la configurazione della "schermata di consenso" per l'autorizzazione dell'app e scegli il tipo di applicazione:
Se non hai impostato una schermata per il consenso, vedrai l'avviso nella console e dovrai farlo ora. Salta questi passaggi successivi se la schermata per il consenso è già stata configurata.
Schermata consenso OAuth
Fai clic su "Configura schermata per il consenso" e seleziona "Esterno" dell'app (o "Interno" se sei cliente di Google Workspace):
Tieni presente che ai fini di questo esercizio, la scelta non è importante perché non stai pubblicando l'esempio del codelab. La maggior parte degli utenti seleziona "Esterni" a una schermata più complessa, ma devi compilare solo il campo "Nome applicazione" campo in alto:
Al momento ti serve solo il nome di un'applicazione, quindi scegli qualcuno che rispecchi il codelab che stai facendo e fai clic su Salva.
Creazione dell'ID client OAuth (autenticazione account utente)
Ora torna alla scheda Credenziali per creare un ID client OAuth2. Qui vedrai una serie di ID client OAuth che puoi creare:
Stiamo sviluppando uno strumento a riga di comando, Altro, quindi sceglilo e fai clic sul pulsante Crea. Scegli un nome ID client che rifletta l'app che stai creando o scegli semplicemente il nome predefinito, che in genere è "Altro client N".
Salvataggio delle credenziali in corso...
- Viene visualizzata una finestra di dialogo con le nuove credenziali. fai clic su OK per chiudere
- Torna alla pagina Credenziali, scorri verso il basso fino a "ID client OAuth2" individua e fai clic sull'icona di download
all'estrema destra dell'ID client appena creato.
- Si apre una finestra di dialogo per salvare un file denominato
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
, probabilmente nella tua cartella Download. Ti consigliamo di accorciarlo con un nome più semplice comeclient_secret.json
(che è quello utilizzato dall'app di esempio), quindi salvarla nella directory/cartella in cui creerai l'app di esempio in questo codelab.