Informationen zu diesem Codelab
1. Google Workspace APIs verwenden
In diesem Codelab lernen Sie die HTTP-basierten RESTful APIs von Google Workspace (ehemals G Suite) kennen. Das Beispiel wird aus Gründen der Kürze und Verfügbarkeit in Python erstellt, Sie können aber auch Ihre bevorzugte Entwicklungssprache verwenden. Du erhältst einführende Informationen, z. B. wie du mit der Developer Console Projekte erstellst und verwaltest, wie du Anmeldedaten erhältst und API-Clientbibliotheken installierst. Wenn Sie die Formalitäten erledigen, entwickeln Sie eine App, die die ersten 100 Dateien und Ordner in Google Drive mithilfe der zugehörigen API erstellen.
Lerninhalte
- Projekt über die Google/Cloud Developers Console erstellen
- Erhalten und OAuth2-Anwendungsanmeldedaten in Ihrer Anwendung verwenden
- Weitere Informationen zur Verwendung der Clientbibliotheken für Google APIs
- Anwendungen mit Google & Google Workspace-APIs
- Mit der Google Drive API Informationen zu Dateien und Ordnern abrufen
Voraussetzungen
- Zugriff auf das Internet und einen Webbrowser
- Ein Google-Konto (Google Workspace-Konten erfordern möglicherweise die Genehmigung eines Administrators)
- Vertrautheit mit POSIX-kompatiblen Systemen wie Linux und Mac OS X
- Möglichkeit, Quelldateien entweder mit einem Code-Editor oder mit Shell-Befehlen zu erstellen.
- Grundkenntnisse in Python (2 oder 3), Sie können aber jede unterstützte Sprache verwenden.
- Einige Dateien und/oder Ordner in Google Drive
2. Umfrage
Wie möchten Sie dieses Codelab-Tutorial verwenden?
Wie würden Sie Ihre Erfahrungen mit den Google Workspace-Entwicklertools und APIs?
3. Übersicht
In diesem Codelab lernen Sie Folgendes:
- Google APIs-Clientbibliothek für Python herunterladen
- Neues Projekt in der Google/Cloud Developers Console erstellen
- Erforderliche Anmeldedaten für Ihre App abrufen
- Verwenden Sie diese Anmeldedaten, um auf die Google Drive API zuzugreifen
Wenn Sie Python lieber nicht verwenden möchten, können Sie das Codelab in Ihrem bevorzugten Entwicklungstool implementieren (die Clientbibliotheken der unterstützten Sprachen finden Sie hier) und die Python-Beispiele einfach als (ausführbaren) Pseudocode zu verweisen.
4. Python-Umgebung bestätigen
Für dieses Codelab müssen Sie die Sprache Python verwenden (obwohl von den Google APIs-Clientbibliotheken viele Sprachen unterstützt werden). Sie können also in Ihrem bevorzugten Entwicklungstool etwas Äquivalentes erstellen und Python einfach als Pseudocode verwenden. Dieses Codelab unterstützt insbesondere Python 2 und 3. Wir empfehlen jedoch, so schnell wie möglich auf Version 3.x umzusteigen.
Cloud Shell ist für Nutzer direkt über die Cloud Console verfügbar und erfordert keine lokale Entwicklungsumgebung. Daher kann diese Anleitung vollständig in der Cloud über einen Webbrowser durchgeführt werden. Cloud Shell ist besonders nützlich, wenn Sie GCP-Produkte und -Produkte sowie APIs Genauer gesagt sind für dieses Codelab bereits beide Versionen von Python in Cloud Shell vorinstalliert.
In Cloud Shell ist auch IPython installiert. Es ist ein interaktiver Python-Interpreter auf höherer Ebene, den wir empfehlen, insbesondere wenn Sie Teil der Data Science- oder Machine Learning-Community sind. Falls ja, ist IPython der Standard-Interpreter für Jupyter Notebooks sowie für Colab, Jupyter Notebooks, die von Google Research gehostet werden.
IPython bevorzugt zuerst einen Python 3-Interpreter, greift jedoch auf Python 2 zurück, wenn 3.x nicht verfügbar ist. IPython kann über Cloud Shell aufgerufen werden, kann aber auch in einer lokalen Entwicklungsumgebung installiert werden. Beenden Sie den Vorgang mit ^D (Strg-d) und akzeptieren Sie das Angebot. Die Beispielausgabe für den Start von ipython
sieht so aus:
$ 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]:
Wenn Sie IPython nicht bevorzugen, können Sie einen standardmäßigen interaktiven Python-Interpreter (entweder Cloud Shell oder Ihre lokale Entwicklungsumgebung) verwenden. Sie können den Vorgang auch mit ^D beenden:
$ 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. >>>
Im Codelab wird außerdem davon ausgegangen, dass Sie das pip
-Installationstool (Python-Paketmanager und Abhängigkeits-Resolver) haben. Es ist in den Versionen 2.7.9 und höher bzw. 3.4 und höher enthalten. Wenn Sie eine ältere Python-Version verwenden, finden Sie die Installationsanweisungen in dieser Anleitung. Je nach Ihren Berechtigungen benötigen Sie möglicherweise sudo
- oder Superuser-Zugriff. Das ist jedoch in der Regel nicht der Fall. Sie können auch explizit pip2
oder pip3
verwenden, um pip
für bestimmte Python-Versionen auszuführen.
Im restlichen Codelab wird davon ausgegangen, dass Sie Python 3 verwenden. Für Python 2 werden spezifische Anweisungen bereitgestellt, wenn sie sich deutlich von 3.x unterscheiden.
*Virtuelle Umgebungen erstellen und verwenden
Dieser Abschnitt ist optional und nur für Nutzer erforderlich, die für dieses Codelab eine virtuelle Umgebung verwenden müssen (siehe Seitenleiste oben). Wenn auf Ihrem Computer nur Python 3 installiert ist, können Sie einfach den folgenden Befehl ausführen, um eine virtuelle Umgebung namens my_env
zu erstellen. Sie können bei Bedarf auch einen anderen Namen wählen:
virtualenv my_env
Wenn Sie jedoch sowohl Python 2 als auch 3 auf Ihrem Computer installieren, empfehlen wir Ihnen, eine Python 3-Umgebung zu installieren, die Sie mit dem -p flag
so verwenden können:
virtualenv -p python3 my_env
Geben Sie die neu erstellte Virtualsuche ein, indem Sie „aktivieren“ so:
source my_env/bin/activate
Prüfen Sie, ob Sie sich in der Umgebung befinden. Sehen Sie dazu nach, ob Ihrer Shell-Eingabeaufforderung jetzt der Name Ihrer Umgebung vorangestellt ist, z. B.
(my_env) $
Jetzt sollten Sie in der Lage sein, alle erforderlichen Pakete mit pip install
zu versehen, Code innerhalb dieser Datei auszuführen usw. Ein weiterer Vorteil ist, dass Sie die gesamte Umgebung sprengen können, ohne den Rest Ihres Systems zu beeinträchtigen.
5. Google APIs-Clientbibliothek für Python installieren
Für dieses Codelab ist die Google API-Clientbibliothek für Python erforderlich. Die Installation ist daher einfach oder du musst gar nichts tun.
Wir haben Ihnen bereits die Verwendung von Cloud Shell empfohlen. Sie können die gesamte Anleitung über einen Webbrowser in der Cloud durcharbeiten. Ein weiterer Grund für die Verwendung von Cloud Shell ist, dass viele gängige Entwicklertools und notwendige Bibliotheken bereits vorinstalliert sind.
*Clientbibliotheken installieren
(optional) Dieser Schritt kann übersprungen werden, wenn Sie Cloud Shell oder eine lokale Umgebung verwenden, in der Sie bereits die Clientbibliotheken installiert haben. Dies ist nur erforderlich, wenn Sie lokal entwickeln und diese noch nicht installiert haben oder nicht sicher sind. Am einfachsten ist es, die Installation mit pip
(oder pip3
) durchzuführen (einschließlich der Aktualisierung von pip
selbst, falls erforderlich):
pip install -U pip google-api-python-client oauth2client
Installation bestätigen
Mit diesem Befehl werden die Clientbibliothek sowie alle davon abhängigen Pakete installiert. Unabhängig davon, ob Sie Cloud Shell oder Ihre eigene Umgebung verwenden, prüfen Sie, ob die Clientbibliothek installiert ist. Importieren Sie dazu die erforderlichen Pakete und achten Sie darauf, dass keine Importfehler (keine Ausgabe) vorliegen:
python3 -c "import googleapiclient, httplib2, oauth2client"
Wenn Sie stattdessen Python 2 (über Cloud Shell) verwenden, erhalten Sie eine Warnung, dass die Unterstützung dafür eingestellt wurde:
******************************************************************************* 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. *******************************************************************************
Sobald Sie den Import „test“ ausführen können, erfolgreich ausgeführt (keine Fehler/Ausgabe) haben, können Sie mit Google APIs kommunizieren.
Zusammenfassung
Da es sich um ein einführendes Codelab handelt, gehen wir davon aus, dass Sie Google und Google Workspace APIs noch nicht kennen. Sie haben bereits Erfahrung mit dem Erstellen von Projekten und dem Erstellen der Nutzerautorisierung „OAuth-Client-IDs“. Falls ja, erstellen Sie ein Projekt oder verwenden Sie ein vorhandenes Projekt oder verwenden Sie eine vorhandene OAuth-Client-ID oder verwenden Sie eine vorhandene OAuth-Client-ID. Überspringen Sie die nächsten beiden Module und gehen Sie direkt zu „Meine Drive-Dateien anzeigen und Ordner-Anwendung“ oder gehen Sie direkt zu „Erweiterte Verwendung der Devconsole“, um diese Schritte mit weniger Anleitungen durchzugehen.
6. Projekt in der Cloud Console angeben
Für eine Anwendung, die Google APIs verwendet, ist ein Projekt erforderlich. Diese werden in der Google Cloud Developers Console oder einfach in der „devconsole“ verwaltet. Da wir in diesem Codelab nur die Google Drive API verwenden, haben wir einen Magic Link (siehe Schritt 1 unten), der:
- Sie gelangen zur DevConsole
- Anleitungen zum Erstellen eines neuen Projekts (oder der Auswahl eines vorhandenen Projekts) und
- Automatische Aktivierung der Drive API
Lass es tun!
- Rufen Sie console.developers.google.com/start/api?id=drive auf und melden Sie sich in Ihrem Google-Konto an.
- Wenn Sie noch keine Projekte haben, akzeptieren Sie die Nutzungsbedingungen für Google APIs über diesen Bildschirm:
Sobald Sie die Bedingungen akzeptiert haben, wird ein neues Projekt mit dem Namen „Mein Projekt“ erstellt. erstellt und die Drive API wird automatisch aktiviert. 3. Wenn Sie bereits ein Projekt erstellt haben (vielleicht Ihr vorheriges Codelab), wird stattdessen dieser Bildschirm angezeigt:
. Wenn Sie auf das Drop-down-Menü Projekt erstellen klicken, wählen Sie ein vorhandenes Projekt aus oder erstellen Sie ein neues Projekt.
Sobald Sie Ihre Auswahl getroffen haben (neues oder bestehendes Projekt), wird die Drive API automatisch für Sie aktiviert. 4. Dass die Drive API aktiviert wurde, erkennen Sie an dieser Bestätigung:
5. Klicken Sie auf Zu den Anmeldedaten, um mit dem nächsten Schritt fortzufahren.
7. *API-Anfragen autorisieren (Nutzerautorisierung)
Dieser Abschnitt kann übersprungen werden, wenn Sie bereits Anmeldedaten für die Autorisierung von Nutzerkonten erstellt haben und mit dem Vorgang vertraut sind. Sie unterscheidet sich von der Dienstkontoautorisierung, deren Verfahren unterschiedlich ist. Fahren Sie daher unten fort.
Einführung in die Autorisierung (sowie einige Authentifizierungsmethoden)
Damit Sie Anfragen an die APIs senden können, muss Ihre Anwendung über die entsprechende Autorisierung verfügen. Authentifizierung, ein ähnliches Wort, beschreibt Anmeldedaten. Dabei authentifizieren Sie sich, wenn Sie sich mit einem Log-in und einem Passwort in Ihrem Google-Konto anmelden. Passwort. Nach der Authentifizierung legen Sie im nächsten Schritt fest, ob Sie für den Zugriff auf Daten wie Blob-Dateien in Cloud Storage oder auf die privaten Dateien eines Nutzers in Google Drive berechtigt sind (bzw. Ihr Code).
Google APIs unterstützen mehrere Autorisierungstypen. Die am häufigsten verwendete Methode für Nutzer der Google Workspace API ist die Nutzerautorisierung, da die Beispielanwendung in diesem Codelab auf Daten von Endnutzern zugreift. Diese Endnutzer müssen Ihrer App Zugriff auf ihre Daten gewähren. Das bedeutet, dass mit Ihrem Code OAuth2-Anmeldedaten von Nutzerkonten abgerufen werden müssen.
Um OAuth2-Anmeldedaten für die Nutzerautorisierung abzurufen, gehen Sie zurück zum API-Manager und wählen Sie die Option im linken Navigationsbereich:
Dort werden alle Ihre Anmeldedaten in drei separaten Abschnitten angezeigt:
Das erste ist für API-Schlüssel, die zweiten OAuth 2.0-Client-IDs und die letzten OAuth2-Dienstkonten. Wir verwenden das in der Mitte.
Anmeldedaten erstellen
Klicken Sie oben auf der Seite „Anmeldedaten“ auf die Schaltfläche + Anmeldedaten erstellen. Daraufhin wird ein Dialogfeld angezeigt, in dem Sie „OAuth-Client-ID“ auswählen.
Auf dem nächsten Bildschirm gibt es zwei Aktionen: Konfigurieren Sie den Zustimmungsbildschirm für die Autorisierung Ihrer App. und wählen Sie den Anwendungstyp aus:
Wenn Sie keinen Zustimmungsbildschirm eingerichtet haben, wird die Warnung in der Konsole angezeigt und Sie müssen dies jetzt tun. Wenn Ihr Zustimmungsbildschirm bereits eingerichtet wurde, können Sie diese nächsten Schritte überspringen.
OAuth-Zustimmungsbildschirm
Klicken Sie auf „Zustimmungsbildschirm konfigurieren“. in dem Sie ein "Extern"-Element App (oder „Intern“, wenn Sie Google Workspace [früher „Google Workspace“] sind):
Für die Zwecke dieser Übung spielt es keine Rolle, welche Sie auswählen, da Sie Ihr Codelab-Beispiel nicht veröffentlichen. Die meisten Nutzer werden „Extern“ auswählen um zu einem komplexeren Bildschirm weitergeleitet zu werden, aber Sie müssen nur den Namen ein:
Im Moment benötigen Sie nur einen Anwendungsnamen. Wählen Sie also einen Namen aus, der zu Ihrem Codelab passt, und klicken Sie auf Speichern.
OAuth-Client-ID wird erstellt (Authentifizierung des Nutzerkontos)
Kehren Sie nun zum Tab „Anmeldedaten“ zurück, um eine OAuth2-Client-ID zu erstellen. Hier siehst du eine Vielzahl von OAuth-Client-IDs, die du erstellen kannst:
Wir entwickeln das Befehlszeilentool Andere. Wählen Sie dieses aus und klicken Sie auf Erstellen. Wählen Sie einen Client-ID-Namen für die App aus, die Sie erstellen, oder verwenden Sie einfach den Standardnamen, der normalerweise "Anderer Client N" lautet.
Anmeldedaten werden gespeichert
- Ein Dialogfeld mit den neuen Anmeldedaten wird angezeigt. Klicken Sie zum Schließen auf OK.
- Scrollen Sie auf der Seite „Anmeldedaten“ nach unten zu „OAuth2-Client-IDs“. suchen und klicken Sie auf das Downloadsymbol
ganz rechts unter Ihrer neu erstellten Client-ID.
- Es wird ein Dialogfeld zum Speichern einer Datei mit dem Namen
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
geöffnet, die wahrscheinlich im Ordner Downloads abgelegt wird. Wir empfehlen, ihn in einen einfacheren Namen wieclient_secret.json
zu kürzen, der in der Beispiel-App verwendet wird, und ihn dann in dem Verzeichnis/Ordner zu speichern, in dem du die Beispiel-App in diesem Codelab erstellst.
Zusammenfassung
Mit den vorhandenen Anmeldedaten können Sie nun über Ihre App auf die Drive API zugreifen. Der Zweck der OAuth-Client-ID besteht darin, dass Ihre Nutzer Ihrer App Zugriff auf ihre Daten in Google Drive gewähren müssen.
HINWEIS: Weitere Informationen zum Erstellen von Projekten, zum Aktivieren von APIs und zum manuellen Abrufen von Anmeldedaten, d.h. ohne den „Assistenten“ ist nach Abschluss dieses Codelabs zur weiteren Untersuchung verfügbar.
8. Drive-Dateien und Ordner App
Erstellen Sie in Ihrer lokalen Entwicklungsumgebung oder in Cloud Shell im Verzeichnis, in dem sich die Datei mit den client_id.json
-Anmeldedaten befindet, eine neue Python-Datei mit dem Namen drive_list.py
und fügen Sie die folgenden Codezeilen hinzu:
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'])
Anwendungsstruktur
Diese Anwendung besteht aus drei Hauptabschnitten:
- Python-Importe zur Einbindung von Bibliotheksfunktionen
- Anmeldedaten für die Anwendung abrufen
- Datei abrufen und Ordnernamen & MIME-Typen im Google Drive-Konto des Nutzers und Display
HINWEIS: Nach Abschluss dieses Codelabs kannst du dich ausführlicher mit dem Code befassen und dir eine detaillierte Erklärung ansehen.
Anwendung ausführen
Geben Sie dieser Datei einen Namen wie drive_list.py
. Wenn Sie das Skript zum ersten Mal ausführen, erhält es nicht die Berechtigung, auf die Dateien des Nutzers in Google Drive (Ihre eigenen) zuzugreifen. Die Ausgabe sieht bei angehaltener Ausführung so aus:
$ 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
Aus der lokalen Entwicklungsumgebung
Das Befehlszeilenskript wird angehalten, wenn ein Browserfenster geöffnet wird und das Dialogfeld mit den OAuth2-Berechtigungen angezeigt wird:
Hier fragt die Anwendung den Nutzer nach den Berechtigungen, die der Code über die Variable SCOPES
anfordert. In diesem Fall ist es die Möglichkeit, die Metadaten der Datei aus dem Google Drive-Konto des Nutzers abzurufen. Ja, in Ihrem Code werden diese Berechtigungsbereiche als URIs angezeigt, sie werden jedoch in die Sprache übersetzt, die im Dialogfeld des OAuth2-Vorgangs für Ihre Sprache festgelegt ist. Der Nutzer muss die angeforderte(n) Berechtigung(en) ausdrücklich autorisieren, andernfalls der Ausführungsablauf des Codes löst eine Ausnahme aus und das Skript geht nicht weiter.
HINWEIS: Einige Nutzer verwenden mehrere Browser und die Autorisierungsanfrage wird möglicherweise in einem nicht bevorzugten Browser angezeigt. Kopieren Sie in diesem Fall einfach die gesamte URL aus dem Browserfenster, das Sie nicht verwenden möchten, und fügen Sie sie in die Adressleiste eines Browsers ein, den Sie verwenden möchten.
Von Cloud Shell
Wenn Sie nicht aufgepasst haben und das Programm in Cloud Shell ausgeführt haben, wurde kein Browserfenster geöffnet, sodass Sie hängen blieben. Stellen Sie fest, dass die Diagnosemeldung unten für Sie bestimmt ist... diese Meldung:
If your browser is on a different machine then exit and re-run this application with the command-line parameter --noauth_local_webserver
Wenn Sie sie auf diese Weise ausführen, erhalten Sie stattdessen die folgende Ausgabe:
$ 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:
Wenn Sie der Anleitung folgen und mit dieser URL zu einem anderen Browsertab wechseln, ist die Oberfläche fast identisch mit der Beschreibung für lokale Entwicklungsumgebungen. Der Hauptunterschied besteht darin, dass am Ende ein weiterer Bildschirm mit dem Bestätigungscode angezeigt wird, den Sie in Cloud Shell eingeben müssen:
Schneide diesen Code aus und füge ihn in das Terminalfenster ein.
Zusammenfassung
Sobald der Nutzer auf „Zulassen“ klickt und/oder den Bestätigungscode in die Aufforderung eingefügt hat, wird die App (weiterhin) ausgeführt und es wird erwartet, dass eine Ausgabe mit Drive-Dateien/-Ordnern und deren MIME-Typen angezeigt wird. Hier ein Beispiel aus einem unserer Testkonten:
$ 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 . . .
Beachten Sie bei aufeinanderfolgenden Ausführungen, dass Sie nicht mehr zur Autorisierung aufgefordert werden, da sie von den Authentifizierungsbibliotheken im Cache gespeichert wird, und direkt zur Ausgabe wechseln. Ist es nicht spannend, Ihre Dokumente zum ersten Mal an einem Terminal zu sehen? Wir glauben ja!
9. Fazit
Jetzt können Sie mehr über die Funktionen der Drive API erfahren oder andere Google Workspace-Anwendungen (Gmail, Google Docs, Tabellen, Präsentationen, Kalender) und andere Google APIs (Maps, Analytics, YouTube usw.) kennenlernen. Herzlichen Glückwunsch! Du hast es bis zum Ende geschafft!
Der Code aus diesem Codelab ist auch im GitHub-Repository unter github.com/googlecodelabs/gsuite-apis-intro verfügbar. Wir versuchen, dieses Codelab mit dem Repository synchron zu halten. Wollen wir weitermachen? Unten finden Sie verschiedene Ressourcen, die Ihnen helfen, sich eingehender mit den in diesem Codelab behandelten Inhalten zu befassen oder andere Möglichkeiten zu entdecken, programmatisch auf Google-Technologien zuzugreifen.
Wie bereits angedeutet, empfehlen wir Ihnen, dieses Codelab-Beispiel in Ihrer bevorzugten Entwicklungssprache zu wiederholen, wenn Sie kein regulärer Python-Entwickler sind. Clientbibliotheken für unterstützte Sprachen finden Sie hier.
Zusätzliche Studie
Sie haben sich nun mit der Drive API vertraut gemacht. Im Folgenden finden Sie einige empfohlene Übungen, mit denen Sie Ihre Fähigkeiten weiter ausbauen können:
- ZIP-Dateien: Schreiben Sie eine Anwendung, mit der mehrere ZIP-Archive in Drive gesichert werden. Diese werden im Handumdrehen dekomprimiert, sodass jeder ZIP-Dateiname der Name des Ordners ist, in dem die Dateien gespeichert sind. EXTRA CREDIT: Unterstützung rekursiver ZIP-Archive in anderen ZIP-Dateien mit in anderen Ordnern eingebetteten Drive-Ordnern. Wenn Sie aufhören, sehen Sie sich diese Node.js-Beispiel-App an.
- Fotoalben: Schreiben Sie den Anfang eines Tools zum Erstellen von Fotoalben, das mehrere Bilder in Google Drive hochlädt und diese in separaten Ordnern nach Zeitstempel und Standortbestimmung. ZUSÄTZLICHE MITTEILUNG: Suchen Sie eine Open-Source-Bibliothek zur Bildbearbeitung und fügen Sie alle Fotos in jedem Ordner zusammen, um Ereignisse zu repräsentieren, die Sie möglicherweise erlebt haben, z. B. eine Reise oder ein Abendessen.
- Google Cloud kennenlernen: Schreiben Sie eine Anwendung, die Google Workspace und die Google Cloud Platform (GCP) miteinander verbindet. Schreiben Sie ein Tool, das Bilddateien von Google Drive in Google Cloud Storage (GCS) speichert, einen anderen „Dateispeicher in der Cloud“. Lösung. Ob Sie es glauben oder nicht, die Verwendung von GCS wird aufgrund der erweiterten Clientbibliotheken einfacher sein als die Verwendung von Drive.
- Analysieren und Eintrag: Erweitern Sie Ihre Lösung auf Platz 3, indem Sie jedes gesicherte Bild analysieren, indem Sie es an die Google Cloud Vision API übergeben und die drei, fünf, zehn wichtigsten „Labels“ abrufen. was die API in diesen Bildern sieht. Schreiben Sie für jedes Bild eine Zeile in eine Google-Tabelle, die die Analyse von Cloud Vision sowie den in GCS gesicherten Speicherort enthält. Falls Sie doch nicht aufgeben, lesen Sie dieses Python-Codelab.
10. Zusätzliche Ressourcen
Dokumentation
- Dokumentation zur Google Drive API (REST API und natives Android-SDK/API)
- Dokumentation zu weiteren Google Workspace APIs
- Dokumentation zu weiteren Google APIs
- Clientbibliotheken für Google APIs
- Dokumentation zu OAuth2
Themenbezogene und allgemeine Videos
- Neue Google API-Projekte erstellen ( Blogpost und Video)
- Boilerplate-Code für die Python-Autorisierung ( Video)
- Dateien in Google Drive auflisten ( Video, Blogpost)
- Videobibliothek für die Google Drive API
- Videoreihe Launchpad Online (Vorgänger von...)
- Videoreihe „Google Workspace Dev Show“
Neuigkeiten & Updates
- Google Workspace Developers-Blog
- Google Workspace-Entwickler Twitter (@GSuiteDevs)
- Monatlicher Google Workspace Developers-Newsletter
Weitere Codelabs
Einführung
- [Apps Script] Google Apps Script – Einführung
Fortgeschritten
- [Apps Script] CLASP Apps Script-Befehlszeilentool
- [Apps Script] Gmail-Add-ons
- [Apps Script] Google Docs-Add-on und Google Cloud Natural Language API
- [Apps Script] Framework für den Hangouts Chat-Bot
- [REST APIs] Benutzerdefiniertes Berichtstool (Sheets API)
- [REST APIs] Benutzerdefinierter Foliengenerator für GitHub-Lizenz-BigQuery-Analysator (Präsentationen und BigQuery APIs)
Erweitert
- [REST APIs] Cloud-Bildverarbeitungsworkflow (Drive, Cloud Storage, Cloud Vision, Sheets APIs)
Referenz-Apps
- Konverter von Markdown in Google Präsentationen (Slides REST API)
11. *Ausführliche Erläuterung der Anwendung
Dieser optionale Abschnitt dient zum Selbststudium am Ende der Sitzung, um eventuell aufgetretene Lücken zu schließen oder um weitere Studien durchzuführen.
Python-Importe zur Einbindung von Bibliotheksfunktionen
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
- Mit der ersten
import
-Anweisung kann dieser Code unter Python 2 ausgeführt werden. Er kann vollständig entfernt werden, wenn Sie ausschließlich Python 3 verwenden. - Eine Python-Stilrichtlinie besteht darin, Importe von Standardbibliotheken und Modulen von Drittanbietern zu trennen – dafür dient die Leerzeile.
- Bei den nächsten drei Importen werden die erforderlichen Klassen und Funktionen aus der Google APIs-Client-Bibliothek... alle werden benötigt, damit wir diese App schreiben können. Kurz gesagt:
googleapiclient
konzentriert sich auf die Verbindung mit Google APIshttplib2
stellt einen HTTP-Client für die Anwendung bereitoauth2client
hilft uns beim Verwalten von OAuth2-Anmeldedaten
Autorisierung und Abrufen von Anmeldedaten für Anwendungen
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()))
- Die App
SCOPES
sind die Berechtigungen, die eine App vom Nutzer abfordert, der sie ausführt. Zum Schutz der Nutzerdaten können Apps ohne entsprechende Berechtigung nicht ausgeführt werden - Es empfiehlt sich, die restriktivsten Berechtigungen zu verwenden, die Ihre App benötigt. Warum?
- Ist es nicht ärgerlich, wenn eine App bei der Installation oder Ausführung zahlreiche Berechtigungen anfordert? Weißt du was? Du bist jetzt auf der anderen Seite und bitte deine Nutzer um all diese Berechtigungen. Wenn Sie restriktivere Bereiche verwenden, haben die Nutzer ein besseres Gefühl, Ihre App zu installieren, da Sie weniger Zugriff wünschen.
- Die meisten Bereiche sehen wie lange URLs aus. Das gilt auch für den Drive-Metadatenbereich.
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
- Für die Kommunikation von Apps mit Google-Servern ist ein Token erforderlich. Gültige Tokens, die von Google zurückgegeben werden, werden in der Token-Speicherdatei
storage.json
gespeichert. Wenn Sie diese Tokens nicht speichern, müssen Sie Ihre App bei jeder Ausführung neu autorisieren.
store = file.Storage('storage.json')
- Diese App prüft zuerst, ob sich bereits gültige Anmeldedaten im Speicher befinden (siehe Bedingung für die
if
-Anweisung).
creds = store.get()
if not creds or creds.invalid:
- Wenn Sie keine oder abgelaufene Anmeldedaten haben, muss ein neuer Autorisierungsablauf [über
oauth2client.client.flow_from_clientsecrets()
] aus Ihrer OAuth-Client-ID und in derclient_id.json
-Datei, die Sie heruntergeladen haben].
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
- Sobald Ihre App einen Ablauf hat, muss sie ausgeführt werden, um dem Nutzer den OAuth2-Berechtigungsbildschirm [über
oauth2client.tools.run_flow()
] (wie oben beschrieben und illustriert) anzuzeigen.
creds = tools.run_flow(flow, store)
- Durch Klicken auf Zulassen stimmen Nutzer zu, dass Ihre App auf die Metadaten ihrer Google Drive-Dateien zugreifen darf. Die Google-Server geben dann Tokens für den Zugriff auf die API zurück. Sie werden als
creds
zurückgegeben und in der Dateistorage.json
im Cache gespeichert. - Ihre Anwendung verfügt nun über gültige Anmeldedaten, um API-Aufrufe auszuführen. Durch den Aufruf von
googleapiclient.discovery.build()
wird ein Dienstendpunkt für die von Ihnen verwendete API erstellt. - Um
build()
zu verwenden, übergeben Sie den API-Namen ('drive'
) und Gewünschte Version (derzeit'v3'
). - Der letzte Parameter ist ein HTTP-Client, der für verschlüsselte API-Aufrufe verwendet wird.
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
Abrufen und die ersten 100 Drive-Dateien/-Ordner anzeigen und MIMEtypes)
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
- Die nächste Codezeile ruft die Methode
list()
in der Sammlungfiles()
für die Drive API auf, um die Anfrage zu erstellen. Diese wird sofort mitexecute()
aufgerufen. Ein Python-dict
wird zurückgegeben, aus dem wir den'files'
-Schlüssel anfordern, um die 100-Datei abzurufen. Ordnernamen aus dem Google Drive-Konto des Nutzers (bzw. weniger, wenn Sie weniger Dateien haben). - Warum 100? Das ist die Standardeinstellung von
DRIVE.files().list()
. Wenn Sie diese Zahl ändern möchten, z. B. auf 10 Dateien oder 1.000, fügen Sie Ihrer Anfrage den ParameterpageSize
hinzu:DRIVE.files().list(pageSize=10)
. Weitere Optionen finden Sie in der Dokumentation. - Der letzte Teil des Skripts durchläuft alle Dateien und zeigt deren Namen und -Datei-MIME-Typen.
Sie haben jetzt Ihre erste Anwendung geschrieben, die eine Google REST API verwendet. Herzlichen Glückwunsch! Abgesehen vom Import- und Autorisierungscode besteht dieses Skript im Grunde aus nur wenigen Codezeilen (wie Sie oben sehen). Die meisten Google APIs funktionieren ähnlich und Sie müssen nur für jeden Dienst, den Sie verwenden möchten, Dienstendpunkte erstellen.
Mehrere Google APIs in einer App verwenden
Ja, Sie können in einer App mehrere APIs verwenden. Hier ist ein Python-Code-Snippet für eine Anwendung, die denselben HTTP-Client wiederverwendet und Dienstendpunkte für drei Google APIs erstellt (ja, auch mit drei verschiedenen 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)
Wir stellen uns vor, dass dieser Code Teil einer App sein kann, die mehrere Foliensätze (Slides API) auf der Grundlage von Tabellendaten (Sheets API) generiert und eine Folienvorlage verwendet, die für jede generierte Präsentation kopiert wird (Drive API). Eine solche Anwendung gibt es zwar nicht, aber Sie sollten in der Lage sein, etwas Ähnliches zu erstellen. Dazu verwenden Sie zwei vorhandene Beispiele, die das Google Workspace-Team als Bausteine erstellt hat:
- Ersetzen von Text & Bilder in Folien ( Blogpost und Video) – verwendet die Drive API, um eine Folienvorlage zu kopieren, und verwendet dann die Slides API, um den Text und Bildplatzhalter
- Folien aus Tabellendaten erstellen ( Blogpost und Video) – Daten werden aus einer Tabelle gelesen (Sheets API) und anhand dieser Daten werden Folien erstellt (Slides API).
Herausforderung: App entwickeln!
12. *Erweiterte Verwendung der devconsole
In diesem optionalen Abschnitt erfahren Sie, wie Sie ohne den Assistenten, wie oben im Codelab beschrieben, Projekte in der devconsole erstellen, APIs aktivieren und Anmeldedaten abrufen. Diese Option ist für fortgeschrittene Nutzer gedacht, die sich damit vertraut machen und wissen möchten, wie das geht.
Projekt in der Cloud Console angeben
Jedes Mal, wenn Sie eine Anwendung mit Google APIs schreiben, benötigen Sie ein Projekt. Sie können entweder ein vorhandenes Projekt wiederverwenden oder ein neues erstellen. Dies geschieht in der Cloud Console. Einige Codelabs bieten einen Magic Link (z.B. einen Einrichtungsassistenten), mit dem Sie schnell loslegen und viele der erforderlichen Schritte überspringen können. Da dies jedoch nicht alle sind, sind dies allgemeine Anweisungen zum Erstellen von Projekten.
Sie können Projekte über die meisten Bildschirme in der Cloud Console erstellen. Dazu müssen Sie sich mit Ihren Google-Anmeldedaten angemeldet haben und oben in der Console ein Drop-down-Menü für Projekte angezeigt werden. Die meisten Screenshots stammen aus dem API Manager, auch bekannt als Developers Console. Sie können ganz einfach in der Navigationsleiste links auf "API Manager" klicken oder direkt in Ihrem Browser die Seite console.developers.google.com aufrufen.
- Wenn Sie noch keine Projekte haben, werden Sie möglicherweise zu...
- der Dashboard-Seite:
- der Seite Bibliothek:
- oder eine ganz leere Seite:
Falls Ihnen der dritte Fehler passiert, aktualisieren Sie einfach den Browser. Die Seite Bibliothek wird geöffnet.
- Unabhängig davon, ob Sie sich auf der Seite Dashboard oder Bibliothek befinden, klicken Sie oben auf der Seite auf die Projektauswahl:
- Als Nächstes wird das Auswahldialogfeld angezeigt. Klicken Sie auf das „+“, auf der rechten Seite, um ein neues Projekt zu erstellen:
- Wenn Sie auf das Pluszeichen klicken, wird die Seite Neues Projekt angezeigt. Alle Privatnutzerkonten erhalten standardmäßig 12 Projekte. Bevor Sie Ihr erstes Projekt erstellen, müssen Sie die Nutzungsbedingungen für Google APIs akzeptieren:
Danach werden die E-Mail-Anwerbung und die Fragen zu den Nutzungsbedingungen bei der Erstellung zukünftiger Projekte entfernt:
5. Wenn du in der Vergangenheit mindestens ein Projekt erstellt hast, wirst du nach der Anmeldung zum Dashboard des letzten Projekts weitergeleitet, an dem du gearbeitet hast. Erstellen Sie dann wie bei Projekt auswählen ein neues Projekt. + klicken. 6. Nachdem das neue Projekt erstellt wurde, werden Sie zurück zur Seite Dashboard geleitet:
Sie haben nun erfolgreich ein Projekt erstellt und können nun mit der Auswahl der APIs fortfahren, die Sie für Ihr Projekt verwenden möchten.
Google APIs aktivieren
Bevor Sie Google APIs verwenden können, müssen Sie sie aktivieren. Das folgende Beispiel zeigt, wie Sie die Cloud Vision API aktivieren. In diesem Codelab verwenden Sie möglicherweise eine oder mehrere APIs. Führen Sie ähnliche Schritte aus, um sie vor der Verwendung zu aktivieren.
Von Cloud Shell
In Cloud Shell können Sie die API mit dem folgenden Befehl aktivieren:
gcloud services enable vision.googleapis.com
Über die Cloud Console
Sie können die Vision API auch im API Manager aktivieren. Rufen Sie in der Cloud Console den API-Manager auf und wählen Sie „Bibliothek“ aus.
Geben Sie in die Suchleiste „Vision“ (Vision) ein und wählen Sie dann die Vision API aus. Sie kann während der Eingabe in etwa wie folgt aussehen:
Wählen Sie die Cloud Vision API aus, um das unten angezeigte Dialogfeld aufzurufen, und klicken Sie dann auf „Aktivieren“ Schaltfläche:
Kosten
Viele Google APIs können kostenlos genutzt werden, die Nutzung von GCP (Produkten und APIs) ist jedoch nicht kostenlos. Beim Aktivieren der Vision API (wie oben beschrieben) werden Sie möglicherweise nach einem aktiven Rechnungskonto gefragt. Nutzer sollten vor der Aktivierung auf die Preisinformationen der Vision API verweisen. Beachten Sie, dass bestimmte Google Cloud Platform-Produkte (GCP) das "Immer kostenlos"-Angebot Stufe, die Sie überschreiten müssen, um eine Abrechnung zu erhalten. Im Codelab wird jeder Aufruf der Vision API auf diese kostenlose Stufe angerechnet. Solange Sie insgesamt innerhalb des Limits bleiben (innerhalb eines Monats), fallen keine Kosten an.
Einige Google APIs, z.B. Die Nutzung von Google Workspace ist durch ein monatliches Abo abgedeckt, sodass beispielsweise die Nutzung der APIs für Gmail, Google Drive, Kalender, Docs, Tabellen und Präsentationen nicht direkt abgerechnet wird. Verschiedene Google-Produkte werden unterschiedlich abgerechnet. Informationen hierzu finden Sie in der Dokumentation Ihrer API.
Zusammenfassung
In diesem Codelab müssen Sie nur die Google Drive API aktivieren. Folgen Sie der Anleitung oben und suchen Sie nach „Drive“. Fahren Sie nach der Aktivierung fort.
API-Anfragen autorisieren (Nutzerautorisierung)
Einführung in die Autorisierung (sowie einige Authentifizierungsmethoden)
Damit Sie Anfragen an die APIs senden können, muss Ihre Anwendung über die entsprechende Autorisierung verfügen. Authentifizierung, ein ähnliches Wort, beschreibt Anmeldedaten. Dabei authentifizieren Sie sich, wenn Sie sich mit einem Log-in und einem Passwort in Ihrem Google-Konto anmelden. Passwort. Nach der Authentifizierung legen Sie im nächsten Schritt fest, ob Sie für den Zugriff auf Daten wie Blob-Dateien in Cloud Storage oder auf die privaten Dateien eines Nutzers in Google Drive berechtigt sind (bzw. Ihr Code).
Google APIs unterstützen mehrere Autorisierungstypen. Die am häufigsten verwendete Methode für Nutzer der Google Workspace API ist die Nutzerautorisierung, da die Beispielanwendung in diesem Codelab auf Daten von Endnutzern zugreift. Diese Endnutzer müssen Ihrer App Zugriff auf ihre Daten gewähren. Das bedeutet, dass mit Ihrem Code OAuth2-Anmeldedaten von Nutzerkonten abgerufen werden müssen.
Um OAuth2-Anmeldedaten für die Nutzerautorisierung abzurufen, gehen Sie zurück zum API-Manager und wählen Sie die Option im linken Navigationsbereich:
Dort werden alle Ihre Anmeldedaten in drei separaten Abschnitten angezeigt:
Das erste ist für API-Schlüssel, die zweiten OAuth 2.0-Client-IDs und die letzten OAuth2-Dienstkonten. Wir verwenden das in der Mitte.
Anmeldedaten erstellen
Klicken Sie oben auf der Seite „Anmeldedaten“ auf die Schaltfläche + Anmeldedaten erstellen. Daraufhin wird ein Dialogfeld angezeigt, in dem Sie „OAuth-Client-ID“ auswählen.
Auf dem nächsten Bildschirm gibt es zwei Aktionen: Konfigurieren Sie den Zustimmungsbildschirm für die Autorisierung Ihrer App. und wählen Sie den Anwendungstyp aus:
Wenn Sie keinen Zustimmungsbildschirm eingerichtet haben, wird die Warnung in der Konsole angezeigt und Sie müssen dies jetzt tun. Wenn Ihr Zustimmungsbildschirm bereits eingerichtet wurde, können Sie diese nächsten Schritte überspringen.
OAuth-Zustimmungsbildschirm
Klicken Sie auf „Zustimmungsbildschirm konfigurieren“. in dem Sie ein "Extern"-Element App (oder „Intern“, wenn Sie Google Workspace-Kunde sind):
Für die Zwecke dieser Übung spielt es keine Rolle, welche Sie auswählen, da Sie Ihr Codelab-Beispiel nicht veröffentlichen. Die meisten Nutzer werden „Extern“ auswählen um zu einem komplexeren Bildschirm weitergeleitet zu werden, aber Sie müssen nur den Namen ein:
Im Moment benötigen Sie nur einen Anwendungsnamen. Wählen Sie also einen Namen aus, der zu Ihrem Codelab passt, und klicken Sie auf Speichern.
OAuth-Client-ID wird erstellt (Authentifizierung des Nutzerkontos)
Kehren Sie nun zum Tab „Anmeldedaten“ zurück, um eine OAuth2-Client-ID zu erstellen. Hier siehst du eine Vielzahl von OAuth-Client-IDs, die du erstellen kannst:
Wir entwickeln das Befehlszeilentool Andere. Wählen Sie dieses aus und klicken Sie auf Erstellen. Wählen Sie einen Client-ID-Namen für die App aus, die Sie erstellen, oder verwenden Sie einfach den Standardnamen, der normalerweise "Anderer Client N" lautet.
Anmeldedaten werden gespeichert
- Ein Dialogfeld mit den neuen Anmeldedaten wird angezeigt. Klicken Sie zum Schließen auf OK.
- Scrollen Sie auf der Seite „Anmeldedaten“ nach unten zu „OAuth2-Client-IDs“. suchen und klicken Sie auf das Downloadsymbol
ganz rechts unter Ihrer neu erstellten Client-ID.
- Es wird ein Dialogfeld zum Speichern einer Datei mit dem Namen
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
geöffnet, die wahrscheinlich im Ordner Downloads abgelegt wird. Wir empfehlen, ihn in einen einfacheren Namen wieclient_secret.json
zu kürzen, der in der Beispiel-App verwendet wird, und ihn dann in dem Verzeichnis/Ordner zu speichern, in dem du die Beispiel-App in diesem Codelab erstellst.