Informacje o tym ćwiczeniu (w Codelabs)
1. Korzystanie z interfejsów Google Workspace API
Dzięki temu ćwiczeniu w Codelabs dowiesz się, jak korzystać z interfejsów API typu REST w Google Workspace (dawniej G Suite). Dla zwięzłości i dostępności przykład zostanie wykonany w Pythonie, ale możesz też użyć swojego ulubionego języka programowania. Poznasz zagadnienia wprowadzające, takie jak używanie konsoli programisty do tworzenia projektów i zarządzania nimi, uzyskiwanie danych uwierzytelniających i instalowanie bibliotek klienta interfejsu API. Po załatwianiu formalności napiszesz aplikację do wyświetlania pierwszych 100 plików i na Dysku Google przy użyciu jego interfejsu API.
Czego się nauczysz
- Tworzenie projektu za pomocą Google/Cloud Developers Console
- Pozyskiwanie używanie w swojej aplikacji danych logowania do aplikacji OAuth2
- Dowiedz się więcej o korzystaniu z bibliotek klienta interfejsów API Google
- Pisz aplikacje za pomocą usług Google & Interfejsy Google Workspace API
- Uzyskiwanie informacji o plikach i folderach przy użyciu interfejsu Google Drive API
Czego potrzebujesz
- Dostęp do internetu i przeglądarki
- konto Google (konta Google Workspace mogą wymagać zatwierdzenia przez administratora),
- znajomość systemów zgodnych z POSIX, takich jak Linux czy macOS X
- Możliwość tworzenia plików źródłowych za pomocą edytora kodu lub poleceń powłoki.
- podstawowe umiejętności w języku Python (2 lub 3), ale możesz używać dowolnego obsługiwanego języka;
- Niektóre pliki lub foldery na Dysku Google
2. Ankieta
W jaki sposób wykorzystasz ten samouczek z programowania?
Jak oceniasz swoje wrażenia z korzystania z narzędzi dla programistów Google Workspace Interfejsy API?
3. Omówienie
Z tego ćwiczenia w Codelabs dowiesz się, jak:
- Pobierz bibliotekę klienta interfejsów API Google dla Pythona
- Tworzenie nowego projektu w Google/Cloud Developers Console
- Uzyskiwanie danych logowania niezbędnych do korzystania z aplikacji
- Użyj tych danych logowania, aby uzyskać dostęp do interfejsu Google Drive API
Jeśli nie chcesz używać Pythona, możesz zaimplementować ćwiczenia z programowania w swoim ulubionym narzędziu dla programistów (biblioteki klienta obsługiwanych języków znajdziesz tutaj) i po prostu odwoływać się do przykładów Pythona jako (wykonywalny) pseudokod.
4. Potwierdź środowisko Pythona
To ćwiczenie w Codelabs wymaga używania języka Python (chociaż wiele języków jest obsługiwanych przez biblioteki klienta interfejsów API Google, więc możesz śmiało stworzyć coś podobnego w swoim ulubionym narzędziu dla programistów i używać Pythona jako pseudokodu. To ćwiczenia z programowania obsługują języki Python 2 i 3, ale zalecamy jak najszybsze przejście na wersję 3.x.
Cloud Shell to udogodnienie dla użytkowników dostępne bezpośrednio z poziomu konsoli Google Cloud, które nie wymaga lokalnego środowiska programistycznego, więc ten samouczek można wykonać całkowicie w chmurze za pomocą przeglądarki. Usługa Cloud Shell jest szczególnie przydatna, jeśli tworzysz lub planujesz później programować z wykorzystaniem usług GCP. API. Dokładniej rzecz biorąc, na potrzeby tego ćwiczenia z programowania w Cloud Shell zainstalowano już obie wersje Pythona.
W Cloud Shell jest też zainstalowany IPython. Jest to interaktywny tłumacz języka Python wyższego poziomu, który polecamy szczególnie użytkownikom pracującym w społeczności zajmującej się badaniem danych lub systemami uczącymi się. Jeśli tak, domyślnym interpreterem notatników Jupyter jest IPython, a także Colab notatników Jupyter hostowanych przez Google Research.
IPython faworyzuje najpierw interpretera Pythona 3, ale jeśli wersja 3.x nie jest dostępna, wraca do Pythona 2. Dostęp do IPython można uzyskać z Cloud Shell, ale można go też zainstalować w lokalnym środowisku programistycznym. Wyjdź za pomocą klawiszy ^D (Ctrl + d) i zaakceptuj ofertę wyjścia. Przykładowe dane wyjściowe uruchamiania funkcji ipython
będą wyglądać tak:
$ 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]:
Jeśli nie podoba Ci się IPython, zdecydowanie możesz użyć standardowego, interaktywnego interpretera Pythona (czyli Cloud Shell lub lokalnego środowiska programistycznego) (wyjście także za pomocą ^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. >>>
W ćwiczeniach w Codelabs zakładamy też, że masz narzędzie instalacyjne pip
(menedżer pakietów Pythona i mechanizm rozwiązywania zależności). Jest on dostarczany w pakiecie z wersją 2.7.9 lub nowszym albo 3.4 i nowszymi. Jeśli masz starszą wersję Pythona, instrukcje instalacji znajdziesz w tym przewodniku. W zależności od uprawnień możesz potrzebować dostępu na poziomie sudo
lub dostępu superużytkownika, ale zwykle nie jest to konieczne. Możesz też bezpośrednio użyć metody pip2
lub pip3
do wykonania pip
na potrzeby określonych wersji Pythona.
Pozostała część ćwiczenia w Codelabs zakłada, że używasz Pythona 3. Jeśli znacznie różnisz się od wersji 3.x, otrzymasz szczegółowe instrukcje dla Pythona 2.
*tworzyć i wykorzystywać środowiska wirtualne,
Ta sekcja jest opcjonalna i bardzo wymagana tylko dla tych, którzy muszą używać środowiska wirtualnego w tych ćwiczeniach z programowania (zgodnie z informacjami na pasku bocznym ostrzeżenia powyżej). Jeśli masz na komputerze tylko język Python 3, po prostu uruchom to polecenie, by utworzyć środowisko wirtualne o nazwie my_env
(w razie potrzeby możesz wybrać inną nazwę):
virtualenv my_env
Jeśli jednak masz zarówno język Python 2, jak 3 na komputerze, zalecamy zainstalowanie środowiska wirtualnego w języku Python 3, co można zrobić za pomocą -p flag
w ten sposób:
virtualenv -p python3 my_env
„Aktywuj”, aby wpisać nowo utworzony virtualenv w następujący sposób:
source my_env/bin/activate
Potwierdź, że jesteś w środowisku, obserwując prompt powłoki, który jest poprzedzony nazwą środowiska, np.
(my_env) $
Teraz powinno być już możliwe pip install
wszystkie wymagane pakiety, wykonanie kodu w ramach tego rozwiązania itp. Inną korzyścią jest to, że w przypadku całkowitego bałaganu Twoja instalacja Pythona może być uszkodzona itd., możesz zniszczyć całe środowisko bez wpływu na pozostałą część systemu.
5. Zainstaluj bibliotekę klienta interfejsów API Google dla Pythona
To ćwiczenie w Codelabs wymaga użycia biblioteki klienta interfejsów API Google dla Pythona, więc jest to prosty proces instalacji lub nie musisz nic robić.
Wcześniej zalecamy korzystanie z Cloud Shell. Cały samouczek możesz ukończyć w przeglądarce w chmurze. Innym powodem, dla którego warto korzystać z Cloud Shell, jest to, że wiele popularnych narzędzi dla programistów i niezbędnych bibliotek jest już wstępnie zainstalowanych.
*Instalowanie bibliotek klienta
(Opcjonalnie) Możesz pominąć ten krok, jeśli używasz Cloud Shell lub środowiska lokalnego, w którym masz już zainstalowane biblioteki klienta. Zrobisz to tylko wtedy, gdy programujesz lokalnie i nie masz (lub nie masz pewności) takiej instalacji. Najłatwiej jest użyć dodatku pip
(lub pip3
) do instalacji (w razie potrzeby także aktualizacji samego programu pip
):
pip install -U pip google-api-python-client oauth2client
Potwierdź instalację
To polecenie instaluje bibliotekę klienta oraz wszystkie pakiety, od których zależy. Niezależnie od tego, czy używasz Cloud Shell, czy własnego środowiska, sprawdź, czy biblioteka klienta jest zainstalowana, importując niezbędne pakiety i czy nie występują błędy importu (ani dane wyjściowe):
python3 -c "import googleapiclient, httplib2, oauth2client"
Jeśli zamiast tego używasz Pythona 2 (z Cloud Shell), zobaczysz ostrzeżenie, że obsługa została wycofana:
******************************************************************************* 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. *******************************************************************************
Gdy będzie można uruchomić ten import, przeprowadź „test” (brak błędów/danych wyjściowych), możesz zacząć komunikować się z interfejsami API Google.
Podsumowanie
Ponieważ jest to wprowadzenie dla programistów, zakładamy, że dopiero zaczynasz korzystać z interfejsów API Google i Google Workspace. Jeśli masz już doświadczenie w tworzeniu projektów i tworzeniu autoryzacji użytkowników „Identyfikatory klientów OAuth”. Jeśli tak, utwórz lub wykorzystaj istniejący projekt, utwórz lub wykorzystaj istniejący identyfikator klienta OAuth. Pomiń 2 następne moduły i przejdź od razu do sekcji „Wyświetlanie plików na Dysku i aplikacja do folderów” lub przejdź do artykułu „Zaawansowane korzystanie z konsoli deweloperskiej”, aby zapoznać się z tymi krokami z mniej wskazówek.
6. Określ projekt w konsoli Cloud
Aplikacja korzystająca z interfejsów API Google wymaga projektu. Zarządzanie nimi odbywa się w Google Cloud Developers Console, czyli w usłudze „devconsole”. W tym ćwiczeniu w programowaniu wykorzystamy tylko interfejs Google Drive API, więc mamy magiczny link (poniżej w kroku 1), który:
- Otwiera konsolę programisty
- przeprowadzi Cię przez proces tworzenia nowego projektu (lub wyboru istniejącego) oraz
- Automagicznie włącza interfejs Drive API.
Do dzieła!
- Wejdź na console.developers.google.com/start/api?id=drive i zaloguj się na swoje konto Google.
- Jeśli nie masz jeszcze żadnych projektów, zobaczysz ten ekran umożliwiający zaakceptowanie Warunków korzystania z interfejsów API Google:
Gdy zaakceptujesz warunki, utworzysz nowy projekt o nazwie „Mój projekt”. a interfejs Drive API zostanie automatycznie włączony. 3. Jeśli zamiast tego masz już projekt (być może poprzednie ćwiczenia z programowania), zobaczysz ten ekran:
Po kliknięciu menu Utwórz projekt wybierz istniejący projekt lub utwórz nowy.
Gdy dokonasz wyboru (nowy lub istniejący projekt), interfejs Drive API zostanie automatycznie włączony. 4. Będziesz mieć pewność, że interfejs Drive API został włączony, i to po potwierdzeniu:
5. Kliknij Przejdź do danych logowania, aby przejść do następnego kroku.
7. *Autoryzacja żądań do interfejsu API (autoryzacja użytkownika)
Możesz pominąć tę sekcję, jeśli masz już utworzone dane logowania do autoryzacji konta użytkownika i znasz ten proces. Różni się ona od autoryzacji konta usługi, której technika się różni, dlatego przejdź dalej poniżej.
Wprowadzenie do autoryzacji (oraz niektóre uwierzytelnianie)
Aby móc wysyłać żądania do interfejsów API, aplikacja musi mieć odpowiednią autoryzację. Uwierzytelnianie, podobnie jak tu, opisuje dane logowania. Musisz się uwierzytelnić, gdy logujesz się na konto Google za pomocą loginu. hasła. Po uwierzytelnieniu kolejnym krokiem jest sprawdzenie, czy masz uprawnienia do uzyskiwania dostępu do danych, takich jak pliki blob w Cloud Storage czy osobiste pliki użytkownika na Dysku Google, czy też Twój kod.
Interfejsy API Google obsługują kilka typów autoryzacji, ale najpowszechniejszym w przypadku użytkowników Google Workspace API jest autoryzacja, ponieważ przykładowa aplikacja w tym ćwiczeniu uzyskuje dostęp do danych należących do użytkowników. Ci użytkownicy muszą zezwolić aplikacji na dostęp do swoich danych. Oznacza to, że kod musi uzyskać dane logowania OAuth2 do konta użytkownika.
Aby uzyskać dane logowania OAuth2 do autoryzacji użytkownika, wróć do menedżera API i wybierz „Dane logowania” na lewym panelu nawigacyjnym:
Wszystkie swoje dane logowania zobaczysz w trzech osobnych sekcjach:
Pierwsze dotyczy kluczy interfejsu API, drugiego identyfikatora klienta OAuth 2.0, a ostatnich kont usługi OAuth2 – tego, który znajduje się w środku.
Tworzę dane logowania
U góry strony Dane logowania kliknij przycisk + Utwórz dane logowania. Otworzy się okno, w którym wybierz opcję „Identyfikator klienta OAuth”.
Na następnym ekranie są do wyboru 2 działania: skonfigurowanie „ekranu zgody” autoryzacji aplikacji. oraz typ aplikacji:
Jeśli nie masz ustawionego ekranu zgody, zobaczysz w konsoli ostrzeżenie. Musisz to zrobić teraz. (Pomiń te kroki, jeśli Twój ekran zgody został już skonfigurowany).
Ekran akceptacji OAuth
Kliknij „Skonfiguruj ekran zgody”. w którym należy wybrać „Z zewnątrz” aplikacja (lub „Wewnętrzna”, jeśli jesteś klientem Google Workspace [dawniej „Google Workspace”):
Na potrzeby tego ćwiczenia nie ma znaczenia, którą opcję wybierzesz, ponieważ nie publikujesz przykładowego ćwiczenia z programowania. Większość użytkowników wybierze „Z zewnątrz” może pojawić się bardziej złożony ekran, ale tak naprawdę wystarczy wpisać „Nazwa aplikacji” u góry:
Na razie potrzebujesz jedynie nazwy aplikacji, więc wybierz osobę, która będzie wykorzystywała wykonywane przez Ciebie ćwiczenia, a następnie kliknij Zapisz.
Tworzę identyfikator klienta OAuth (uwierzytelnianie konta użytkownika)
Teraz wróć na kartę Dane logowania, aby utworzyć identyfikator klienta OAuth2. Tutaj znajdziesz różne identyfikatory klienta OAuth, które możesz utworzyć:
Opracowujemy narzędzie wiersza poleceń – Inne. Wybierz je, a następnie kliknij przycisk Utwórz. Wybierz nazwę identyfikatora klienta odpowiadającą tworzonej aplikacji lub po prostu użyj nazwy domyślnej, którą zwykle jest „Inny klient N”.
Zapisuję dane logowania
- Pojawi się okno z nowymi danymi logowania. kliknij OK, aby zamknąć
- Wróć na stronę Dane logowania i przewiń w dół do sekcji „Identyfikatory klienta OAuth2”. znajdź i kliknij ikonę pobierania
w prawym dolnym rogu nowo utworzonego identyfikatora klienta.
- Otworzy się okno umożliwiające zapisanie pliku o nazwie
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
, który prawdopodobnie znajduje się w folderze Pobrane. Zalecamy skrócenie nazwy do prostszej nazwy, na przykładclient_secret.json
(z której korzysta przykładowa aplikacja), a następnie zapisanie jej w katalogu lub folderze, w którym będziesz tworzyć przykładową aplikację w ramach tego ćwiczenia w programie.
Podsumowanie
Gdy masz już dane logowania, możesz korzystać z interfejsu Drive API z poziomu aplikacji, pamiętając, że identyfikator klienta OAuth jest taki, że użytkownicy muszą przyznać Twojej aplikacji uprawnienia dostępu do swoich danych na Dysku Google.
UWAGA: możesz uzyskać więcej informacji na temat tworzenia projektów, włączania interfejsów API i uzyskiwania danych logowania ręcznie, tj.bez użycia „kreatora”. są dostępne po zakończeniu tego ćwiczenia z programowania w celu dalszego zbadania.
8. Wyświetlam Twoje pliki na Dysku i aplikacja do obsługi folderów
W lokalnym środowisku programistycznym lub w Cloud Shell, w tym samym katalogu, w którym znajduje się plik danych logowania client_id.json
, utwórz nowy plik Pythona o nazwie drive_list.py
i dodaj do niego poniższe wiersze:
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'])
Struktura aplikacji
W tej aplikacji są 3 główne sekcje:
- Importowanie Pythona w celu wprowadzenia funkcji biblioteki
- Uzyskiwanie danych logowania do aplikacji
- Pobierz plik & nazwy folderów Typ MIME na Dysku Google użytkownika oraz wyświetlacz
UWAGA: po zakończeniu tego ćwiczenia w programowaniu po zakończeniu tego ćwiczenia w Codelabs znajdziesz bardziej szczegółowe informacje na temat kodu oraz szczegółowe wyjaśnienie.
Uruchamianie aplikacji
Nazwij ten plik na przykład drive_list.py
. Gdy pierwszy raz uruchomisz skrypt, nie będzie on miał dostępu do plików użytkownika na Dysku (w Twoim). Dane wyjściowe wyglądają tak, gdy wykonywanie jest wstrzymane:
$ 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
Z lokalnego środowiska programistycznego
Skrypt wiersza poleceń zostanie wstrzymany. Otworzy się okno przeglądarki, w którym wyświetli się okno uprawnień OAuth2:
W tym miejscu aplikacja prosi użytkownika o uprawnienia, o które prosi kod (przez zmienną SCOPES
). W tym przypadku jest to możliwość wyświetlenia metadanych pliku z Dysku Google użytkownika. Tak. Te zakresy uprawnień w kodzie są wyświetlane jako identyfikatory URI, ale są tłumaczone na język określony przez ustawienia regionalne w oknie procesu OAuth2. Użytkownik musi jednoznacznie autoryzować wymagane uprawnienia. W przeciwnym razie „uruchomienie” spowoduje zgłoszenie wyjątku, a skrypt nie będzie kontynuował dalszych czynności.
UWAGA: niektórzy użytkownicy mają kilka przeglądarek, w związku z czym prośba o autoryzację może pojawiać się w przeglądarce, która nie jest preferowana. W takim przypadku po prostu skopiuj cały URL z okna przeglądarki, której nie chcesz używać, i wklej go na pasku adresu przeglądarki, której chcesz używać.
Z Cloud Shell
Jeśli program uruchamiał się w Cloud Shell, nie otworzyło się żadne okno przeglądarki, przez co program utknął na Twojej stronie. Uświadom sobie, że komunikat diagnostyczny u dołu strony był przeznaczony dla Ciebie... ten:
If your browser is on a different machine then exit and re-run this application with the command-line parameter --noauth_local_webserver
Po uruchomieniu w ten sposób otrzymasz następujące dane wyjściowe:
$ 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:
Gdy wykonasz instrukcje i przejdziesz na inną kartę przeglądarki z tym adresem URL, środowisko programistyczne będzie wyglądać prawie tak samo jak powyżej. Główna różnica polega na tym, że na końcu pojawia się jeszcze jeden ekran z kodem weryfikacyjnym, który należy wpisać w Cloud Shell:
Wytnij ten kod i wklej go w oknie terminala.
Podsumowanie
Gdy użytkownik kliknie „Zezwól” lub wklei się kod weryfikacyjny w prośbie, aplikacja będzie nadal działać. Zobaczysz dane wyjściowe zawierające pliki/foldery na Dysku i ich typy MIME. Oto przykład z jednego z naszych kont testowych:
$ 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 . . .
Zwróć uwagę, że w kolejnych wykonaniach nie jest już wyświetlany monit o autoryzację (ponieważ kod jest zapisany w pamięci podręcznej bibliotek uwierzytelniania) i możesz od razu przejść do danych wyjściowych. Czy to ekscytujące, gdy po raz pierwszy widzisz dokumenty w terminalu? Tak sądzimy!
9. Podsumowanie
Teraz możesz poznać funkcje interfejsu Drive API lub inne usługi Google Workspace (Gmail, Dokumenty, Arkusze, Prezentacje, Kalendarz) i inne interfejsy API Google (Mapy, Analytics, YouTube itp.). Gratulacje! Udało Ci się dotrzeć do końca.
Kod zaprezentowany w tym ćwiczeniu jest również dostępny w repozytorium GitHub na stronie github.com/googlecodelabs/gsuite-apis-intro. Staramy się, aby ćwiczenia z programowania były zsynchronizowane z repozytorium. Możemy przejść dalej? Poniżej znajdziesz różne zasoby, z których możesz skorzystać, aby zgłębić materiały omówione w tym ćwiczeniu z programowania. Jeśli chcesz poznać inne sposoby korzystania z technologii Google w sposób zautomatyzowany,
Jak wspomnieliśmy wcześniej, jeśli nie jesteś zwykłym programistą Python, zachęcamy do powtórzenia tego przykładu ćwiczeń w ulubionym języku programowania. Biblioteki klienta dla obsługiwanych języków są dostępne tutaj.
Badanie dodatkowe
Skoro masz już doświadczenie w korzystaniu z interfejsu Drive API, zapoznaj się z tymi rekomendowanymi ćwiczeniami, które pomogą Ci rozwinąć umiejętności:
- Pliki ZIP: napisz aplikację, która tworzy na Dysku kopie zapasowe wielu archiwów ZIP, rozpakowując je na bieżąco w taki sposób, aby każda nazwa pliku ZIP odpowiadała nazwie folderu, do którego się one znajdują. DODATKOWY ŚRODKI: obsługa rekurencyjnych archiwów ZIP w innych plikach ZIP z folderami z Dysku umieszczonymi w innych folderach. Jeśli się poddasz, zapoznaj się z tą przykładową aplikacją Node.js.
- Albumy zdjęć: podaj początek narzędzia do generowania albumów ze zdjęciami, które przesyła wiele zdjęć na Dysk Google, porządkując je w osobnych folderach według sygnatury czasowej geolokalizację. DODATKOWY ŚRODKI: znajdź bibliotekę open source do manipulacji obrazami i połącz wszystkie zdjęcia z każdego folderu, aby pokazać wydarzenia, których doświadczyłeś (wycieczkę, kolację itp.).
- Poznaj GCP: napisz aplikację, która łączy Google Workspace z Google Cloud Platform (GCP). Napisz narzędzie, które tworzy kopię zapasową plików graficznych z Dysku Google do Google Cloud Storage (GCS) lub innego „przechowywania plików w chmurze” i rozwiązania problemu. Może ciężko uwierzyć, ale użycie GCS jest prostsze niż Dysk ze względu na zaawansowane biblioteki klienta.
- Analizuj i rekord: rozszerz swoje rozwiązanie do etapu 3, analizując każdy obraz, którego kopia zapasowa została utworzona. W tym celu przekaż go do interfejsu Google Cloud Vision API i uzyskaj pierwsze „etykiety” (3, 5, 10) tego, co interfejs API jest widoczny na tych obrazach. W przypadku każdego obrazu zapisz wiersz w arkuszu Google zawierający analizę z Cloud Vision oraz jego kopię zapasową w GCS. Jeśli się poddasz, wykonaj te ćwiczenia z programowania w języku Python.
10. Dodatkowe materiały
Dokumentacja
- Dokumentacja interfejsu Google Drive API (API REST oraz natywny pakiet SDK/API na Androida)
- Inne dokumentacji interfejsów Google Workspace API
- Inna dokumentacja interfejsów API Google
- biblioteki klienta interfejsów API Google,
- Dokumentacja OAuth2
Filmy dotyczące zagadnień powiązanych i ogólnych
- Tworzenie nowych projektów interfejsów API Google ( post na blogu i film)
- Weryfikacja stałego kodu autoryzacji w Pythonie ( film)
- Wyświetlanie listy plików na Dysku Google ( film, post na blogu)
- Biblioteka wideo interfejsu Google Drive API
- Seria filmów na platformie Launchpad Online (wcześniejsza wersja...)
- Seria filmów dotyczących Google Workspace Dev Show
Wiadomości i aktualizacje
- Blog dla programistów Google Workspace
- Strona dla deweloperów Google Workspacena Twitterze (@GSuiteDevs)
- Miesięczny newsletter dla deweloperów Google Workspace
Inne ćwiczenia z programowania
Wprowadzające
- [Apps Script] Wprowadzenie do Google Apps Script
Średnio zaawansowany
- [Apps Script] Narzędzie wiersza poleceń CLASP Apps Script
- [Apps Script] Dodatki do Gmaila
- [Apps Script] Dodatek do Dokumentów Interfejs GCP Natural Language API
- [Apps Script] Platforma bota Hangouts Chat
- [Interfejsy API typu REST] Narzędzie do raportowania niestandardowego (Sheets API)
- [Interfejsy API typu REST] Niestandardowy generator slajdów na potrzeby analizatora BigQuery na podstawie licencji GitHuba (interfejsy Slides + BigQuery API)
Zaawansowane
- [Interfejsy API typu REST] Proces przetwarzania obrazów w chmurze (interfejsy API Dysku, Cloud Storage, Cloud Vision, Arkuszy)
Aplikacje referencyjne
- Konwertowanie plików Markdown na Prezentacje Google (interfejs API typu REST Prezentacji)
11. *Szczegółowe wyjaśnienie dotyczące zgłoszenia
Po zakończeniu sesji ta opcjonalna sekcja służy do uzupełnienia ewentualnych braków lub do dalszych badań.
Importowanie Pythona w celu wprowadzenia funkcji biblioteki
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
- Pierwsza instrukcja
import
umożliwia uruchomienie tego kodu w języku Python 2 – jeśli korzystasz wyłącznie z języka Python 3, możesz ją całkowicie usunąć. - Jedna ze wskazówek dotyczących stylu w języku Python dotyczy oddzielania importów z biblioteki standardowej od importu z modułu zewnętrznego – po to właśnie jest pusty wiersz.
- Następne 3 importy importują niezbędne klasy i z biblioteki klienta interfejsów API Google... wszystkie są potrzebne do napisania tej aplikacji. Oto w skrócie:
googleapiclient
koncentruje się na łączeniu z interfejsami API Googlehttplib2
udostępnia klienta HTTP, którego aplikacja ma używaćoauth2client
pomaga nam zarządzać danymi logowania OAuth2
Autoryzacja i uzyskiwanie danych logowania do aplikacji
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()))
- Aplikacja
SCOPES
to uprawnienia, o które prosi użytkownik aplikacji, która ją uruchomi. Ze względu na bezpieczeństwo danych użytkownika aplikacje nie mogą działać bez przyznania odpowiednich uprawnień - Sprawdzoną metodą jest używanie maksymalnie restrykcyjnych uprawnień wymaganych do działania aplikacji. Dlaczego?
- Czy to nie jest irytujące, gdy aplikacja prosi o duży zestaw uprawnień podczas jej instalowania lub uruchamiania? A to ciekawostka… Jesteś po drugiej stronie monety, prosząc użytkowników o przyznanie Ci wszystkich uprawnień. Użycie bardziej restrykcyjnych zakresów ułatwi użytkownikom zainstalowanie aplikacji, ponieważ prosisz o mniejszy dostęp.
- Większość zakresów wygląda jak długie adresy URL, a zakres metadanych Dysku nie jest wyjątkiem.
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
- Aplikacje muszą mieć token, aby komunikować się z serwerami Google. Prawidłowe tokeny zwracane od Google będą zapisywane w pliku pamięci tokenów
storage.json
. Jeśli nie zapiszesz tych tokenów, trzeba będzie ponownie autoryzować aplikację przy każdym jej uruchomieniu.
store = file.Storage('storage.json')
- Ta aplikacja najpierw sprawdza, czy mamy już w pamięci prawidłowe dane logowania (patrz warunkowa instrukcja
if
).
creds = store.get()
if not creds or creds.invalid:
- Jeśli nie masz danych logowania lub nie masz tych danych, które wygasły, musisz utworzyć nowy proces autoryzacji [przy użyciu
oauth2client.client.flow_from_clientsecrets()
] na podstawie identyfikatora klienta OAuth i w pobranym plikuclient_id.json
].
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
- Gdy aplikacja zacznie postępować, musi zostać uruchomiona, aby wyświetlić użytkownikowi ekran uprawnień OAuth2 [za pomocą aplikacji
oauth2client.tools.run_flow()
] w opisany i przedstawiony wyżej sposób.
creds = tools.run_flow(flow, store)
- Klikając Zezwól, użytkownicy wyrażają zgodę na to, aby aplikacja miała dostęp do metadanych ich plików na Dysku Google, a serwery Google zwracają tokeny dostępu do interfejsu API. Są one zwracane jako
creds
i zapisywane w pamięci podręcznej plikustorage.json
. - Na tym etapie aplikacja ma teraz prawidłowe dane uwierzytelniające, aby móc wywoływać interfejs API. Wywołanie
googleapiclient.discovery.build()
powoduje utworzenie punktu końcowego usługi dla używanego interfejsu API. - Aby używać funkcji
build()
, przekaż nazwę interfejsu API ('drive'
) & żądana wersja (obecnie'v3'
). - Ostatni parametr to klient HTTP, którego należy używać do zaszyfrowanych wywołań interfejsu API.
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
Pobierz i wyświetl pierwszych 100 plików/folderów na Dysku MIMEtypes)
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
- Następny wiersz kodu wywołuje metodę
list()
w kolekcjifiles()
dla interfejsu Drive API, aby utworzyć żądanie, które jest wywoływane natychmiast za pomocąexecute()
. Zwracany jest koddict
w Pythonie, z którego prosimy o klucz'files'
w celu pobrania pliku 100 i nazw folderów z Dysku Google użytkownika (lub mniejszą, jeśli masz mniej plików). - Dlaczego 100? To wartość domyślna ze strony
DRIVE.files().list()
. Jeśli chcesz zmienić tę liczbę, np. tylko 10 plików lub 1000, dodaj do żądania parametrpageSize
:DRIVE.files().list(pageSize=10)
. Więcej opcji znajdziesz w dokumentacji. - Ostatnia część skryptu to pętla przez każdy plik i wyświetla się jego nazwy typu MIME.
Masz już za sobą pierwszą aplikację wykorzystującą interfejs API Google typu REST. Gratulujemy! Poza importami i kodem autoryzacji ten skrypt w rzeczywistości zawiera tylko kilka wierszy kodu (zobacz powyżej). Większość interfejsów API Google działa w podobny sposób i wystarczy utworzyć tylko punkty końcowe usługi dla każdego z nich, których chcesz używać.
Używanie więcej niż jednego interfejsu API Google w aplikacji
Tak, zdecydowanie w tej samej aplikacji można używać więcej niż jednego interfejsu API. Oto fragment kodu Pythona dla aplikacji, która używa tego samego klienta HTTP i tworzy punkty końcowe usługi dla 3 interfejsów API Google (tak, również z 3 różnymi 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)
Zakładamy, że ten kod może stanowić część aplikacji, która generuje wiele pokazów slajdów (interfejs Slides API) na podstawie danych arkusza kalkulacyjnego (interfejs Arkuszy Google API) i używa szablonu slajdu, który jest kopiowany (interfejs API Dysku) do każdej wygenerowanej prezentacji. Chociaż aplikacja nie istnieje, warto spróbować utworzyć podobną aplikację, korzystając z 2 istniejących przykładów utworzonych przez zespół Google Workspace jako elementy składowe:
- Zastępowanie tekstu & obrazy na slajdach ( posty na blogu i filmy) – za pomocą interfejsu Drive API do skopiowania prezentacji szablonów slajdów, a potem do zmiany tekstu w celu obiekty zastępcze obrazów
- Generowanie slajdów na podstawie danych z arkuszy kalkulacyjnych ( posty i filmy na blogu) – odczytuje dane z arkusza kalkulacyjnego (interfejsSheets API) i tworzy slajdy (interfejs Slides API) na podstawie tych danych.
Twoje wyzwanie: stwórz taką aplikację!
12. *Zaawansowane użycie konsoli deweloperskiej
W tej opcjonalnej sekcji opisujemy, jak tworzyć projekty w konsoli programisty, włączać interfejsy API i uzyskiwać dane logowania bez korzystania z kreatora (jak powyżej) z ćwiczeń z programowania. Jest przeznaczona dla średnio zaawansowanych użytkowników, którzy chcą robić to ręcznie lub chcą się tego nauczyć.
Określ projekt w konsoli Cloud
Za każdym razem, gdy piszesz aplikację przy użyciu interfejsów API Google, musisz mieć projekt. Możesz wykorzystać istniejący projekt lub utworzyć nowy. Odbywa się to w konsoli Cloud. Niektóre ćwiczenia z programowania zawierają magiczny link (np. kreator konfiguracji), dzięki któremu można szybko rozpocząć pracę, pomijając wiele wymaganych kroków. Jednak nie wszystkie z nich są, dlatego są to ogólne instrukcje tworzenia projektów.
Możesz tworzyć projekty na większości ekranów w konsoli Cloud, jeśli po zalogowaniu się za pomocą danych logowania Google zobaczysz menu projektu u góry konsoli. Pamiętaj, że większość przedstawionych tu zrzutów ekranu pochodzi z interfejsu API Manager (nazywanego też Developers Console). Możesz je łatwo otworzyć, klikając „Menedżer API” w panelu nawigacyjnym po lewej stronie lub bezpośrednio w przeglądarce pod adresem console.developers.google.com.
- Jeśli nie masz jeszcze żadnych projektów, może nastąpić przekierowanie do...
- strona Panel:
- strona Biblioteka:
- lub całkowicie pusta strona:
Jeśli przydarzy Ci się trzecia, odśwież stronę w przeglądarce, by wyświetlić stronę Biblioteka.
- Niezależnie od tego, czy jesteś na stronie Panel czy Biblioteka, kliknij selektor projektów u góry strony:
- Pojawi się okno wyboru. Kliknij przycisk „+”, po prawej stronie, aby utworzyć nowy projekt:
- Gdy klikniesz „+”, pojawi się strona New Project (Nowy projekt). Wszystkie konta klientów otrzymują domyślnie 12 projektów. Przed utworzeniem pierwszego projektu musisz zaakceptować Warunki korzystania z interfejsów API Google:
Gdy to zrobisz, podczas tworzenia przyszłych projektów znikną pytania dotyczące pozyskiwania e-maili i Warunków korzystania z usługi:
5. Jeśli masz już utworzony co najmniej 1 projekt, po zalogowaniu się wyświetli Ci panel ostatniego projektu, nad którym pracujesz. Następnie utwórz nowy projekt – kliknij Wybierz projekt > + 6. Gdy nowy projekt zostanie utworzony, ponownie otworzy się strona Panel:
Udało Ci się utworzyć projekt. Możesz przejść do kolejnego etapu – wybierz interfejsy API, których chcesz użyć w projekcie.
Włączanie interfejsów API Google
Przed rozpoczęciem korzystania z interfejsów API Google musisz je włączyć. Poniższy przykład pokazuje, co należy zrobić, aby włączyć interfejs Cloud Vision API. W ramach tego ćwiczenia w programie możesz używać co najmniej 1 interfejsu API. Przed użyciem musisz wykonać podobne czynności, aby go włączyć.
Z Cloud Shell
Interfejs API możesz włączyć za pomocą Cloud Shell, używając tego polecenia:
gcloud services enable vision.googleapis.com
W konsoli Google Cloud
Możesz też włączyć Vision API w menedżerze interfejsów API. W konsoli Cloud otwórz Menedżera interfejsów API i wybierz „Biblioteka”.
Na pasku wyszukiwania zacznij wpisywać „vision”, i wybierz Vision API, gdy się pojawi. W trakcie pisania może to wyglądać mniej więcej tak:
Wybierz interfejs Cloud Vision API, aby wyświetlić okno widoczne poniżej, a następnie kliknij „Włącz”. przycisk:
Koszt
Chociaż z wielu interfejsów API Google można korzystać bez opłat, korzystanie z GCP (usług i interfejsów API) nie jest bezpłatne. Podczas włączania Vision API (w sposób opisany powyżej) może pojawić się prośba o aktywne konto rozliczeniowe. Przed jego włączeniem użytkownik powinien wskazać informacje o cenach interfejsu Vision API. Pamiętaj, że niektóre usługi Google Cloud Platform (GCP) mają atrybut „Zawsze bezpłatny” poziomu, który musisz przekroczyć, aby naliczać opłaty. Na potrzeby ćwiczeń z programowania każde wywołanie interfejsu Vision API jest wliczane do tego poziomu bezpłatnego. Dopóki nie przekroczysz limitu w ramach limitu (w ciągu miesiąca), nie poniesiesz żadnych opłat.
Niektóre interfejsy API Google, np. Korzystanie z Google Workspace jest objęte subskrypcją miesięczną, więc nie ma bezpośrednich płatności za na przykład za korzystanie z interfejsów API Gmaila, Dysku, Kalendarza, Dokumentów, Arkuszy i Prezentacji. Różne usługi Google są rozliczane w różny sposób, dlatego zapoznaj się z dokumentacją interfejsu API.
Podsumowanie
W ramach tego ćwiczenia w Codelabs musisz tylko włączyć interfejs Google Drive API, więc postępuj zgodnie z instrukcjami powyżej i wyszukaj „Dysk”. Przejdź dalej, gdy zostanie włączona.
Autoryzacja żądań do interfejsu API (autoryzacja użytkownika)
Wprowadzenie do autoryzacji (oraz niektóre uwierzytelnianie)
Aby móc wysyłać żądania do interfejsów API, aplikacja musi mieć odpowiednią autoryzację. Uwierzytelnianie, podobnie jak tu, opisuje dane logowania. Musisz się uwierzytelnić, gdy logujesz się na konto Google za pomocą loginu. hasła. Po uwierzytelnieniu kolejnym krokiem jest sprawdzenie, czy masz uprawnienia do uzyskiwania dostępu do danych, takich jak pliki blob w Cloud Storage czy osobiste pliki użytkownika na Dysku Google, czy też Twój kod.
Interfejsy API Google obsługują kilka typów autoryzacji, ale najpowszechniejszym w przypadku użytkowników Google Workspace API jest autoryzacja, ponieważ przykładowa aplikacja w tym ćwiczeniu uzyskuje dostęp do danych należących do użytkowników. Ci użytkownicy muszą zezwolić aplikacji na dostęp do swoich danych. Oznacza to, że kod musi uzyskać dane logowania OAuth2 do konta użytkownika.
Aby uzyskać dane logowania OAuth2 do autoryzacji użytkownika, wróć do menedżera API i wybierz „Dane logowania” na lewym panelu nawigacyjnym:
Wszystkie swoje dane logowania zobaczysz w trzech osobnych sekcjach:
Pierwsze dotyczy kluczy interfejsu API, drugiego identyfikatora klienta OAuth 2.0, a ostatnich kont usługi OAuth2 – tego, który znajduje się w środku.
Tworzę dane logowania
U góry strony Dane logowania kliknij przycisk + Utwórz dane logowania. Otworzy się okno, w którym wybierz opcję „Identyfikator klienta OAuth”.
Na następnym ekranie są do wyboru 2 działania: skonfigurowanie „ekranu zgody” autoryzacji aplikacji. oraz typ aplikacji:
Jeśli nie masz ustawionego ekranu zgody, zobaczysz w konsoli ostrzeżenie. Musisz to zrobić teraz. (Pomiń te kroki, jeśli Twój ekran zgody został już skonfigurowany).
Ekran akceptacji OAuth
Kliknij „Skonfiguruj ekran zgody”. w którym należy wybrać „Z zewnątrz” app (lub „Wewnętrzna”, jeśli korzystasz z Google Workspace):
Na potrzeby tego ćwiczenia nie ma znaczenia, którą opcję wybierzesz, ponieważ nie publikujesz przykładowego ćwiczenia z programowania. Większość użytkowników wybierze „Z zewnątrz” może pojawić się bardziej złożony ekran, ale tak naprawdę wystarczy wpisać „Nazwa aplikacji” u góry:
Na razie potrzebujesz jedynie nazwy aplikacji, więc wybierz osobę, która będzie wykorzystywała wykonywane przez Ciebie ćwiczenia, a następnie kliknij Zapisz.
Tworzę identyfikator klienta OAuth (uwierzytelnianie konta użytkownika)
Teraz wróć na kartę Dane logowania, aby utworzyć identyfikator klienta OAuth2. Tutaj znajdziesz różne identyfikatory klienta OAuth, które możesz utworzyć:
Opracowujemy narzędzie wiersza poleceń – Inne. Wybierz je, a następnie kliknij przycisk Utwórz. Wybierz nazwę identyfikatora klienta odpowiadającą tworzonej aplikacji lub po prostu użyj nazwy domyślnej, którą zwykle jest „Inny klient N”.
Zapisuję dane logowania
- Pojawi się okno z nowymi danymi logowania. kliknij OK, aby zamknąć
- Wróć na stronę Dane logowania i przewiń w dół do sekcji „Identyfikatory klienta OAuth2”. znajdź i kliknij ikonę pobierania
w prawym dolnym rogu nowo utworzonego identyfikatora klienta.
- Otworzy się okno umożliwiające zapisanie pliku o nazwie
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
, który prawdopodobnie znajduje się w folderze Pobrane. Zalecamy skrócenie nazwy do prostszej nazwy, na przykładclient_secret.json
(z której korzysta przykładowa aplikacja), a następnie zapisanie jej w katalogu lub folderze, w którym będziesz tworzyć przykładową aplikację w ramach tego ćwiczenia w programie.