О практической работе
1. Использование API Google Workspace
В этой лаборатории кода вы познакомитесь с использованием API-интерфейсов RESTful на основе HTTP Google Workspace (ранее G Suite). Для краткости и доступности пример будет написан на Python, но вы также можете использовать свой любимый язык разработки. Вы познакомитесь с вводными темами, такими как использование консоли разработчика для создания проектов и управления ими, получение учетных данных для авторизации и установка клиентских библиотек API. Уладив формальности, вы напишете приложение, которое будет отображать первые 100 файлов и папок на вашем Google Диске, используя его API.
Что вы узнаете
- Создайте проект с помощью консоли разработчиков Google/Cloud.
- Получите и используйте учетные данные приложения OAuth2 в своем приложении.
- Узнайте об использовании клиентских библиотек Google API.
- Написание приложений с использованием API Google и Google Workspace.
- Получите информацию о файлах и папках с помощью API Google Диска.
Что вам понадобится
- Доступ к Интернету и веб-браузеру
- Учетная запись Google (для учетных записей Google Workspace может потребоваться одобрение администратора)
- Знакомство с POSIX-совместимыми системами, такими как Linux и Mac OS X.
- Возможность создавать исходные файлы с помощью редактора кода или команд оболочки.
- Базовые навыки работы с Python (2 или 3), но вы можете использовать любой поддерживаемый язык.
- Некоторые файлы и/или папки на вашем Google Диске.
2. Опрос
Как вы будете использовать это руководство по кодовой лаборатории?
Как бы вы оценили свой опыт работы с инструментами и API разработчика Google Workspace?
3. Обзор
В этой лаборатории вы узнаете, как:
- Загрузите клиентскую библиотеку API Google для Python.
- Создайте новый проект в консоли разработчиков Google/Cloud.
- Получите необходимые учетные данные для вашего приложения.
- Используйте эти учетные данные для доступа к API Google Диска.
Если вы предпочитаете не использовать Python, вы можете реализовать кодовую лабораторию в своем любимом инструменте разработки (клиентские библиотеки поддерживаемых языков доступны здесь ) и просто обращаться к примерам Python как к (исполняемому) псевдокоду.
4. Подтвердите среду Python
Для этой лаборатории кода требуется использовать язык Python (хотя многие языки поддерживаются клиентскими библиотеками API Google, поэтому не стесняйтесь создавать что-то эквивалентное в своем любимом инструменте разработки и просто использовать Python в качестве псевдокода). В частности, эта лаборатория кода поддерживает Python 2 и 3, но мы рекомендуем как можно скорее перейти на версию 3.x.
Cloud Shell — это удобный инструмент, доступный пользователям непосредственно из Cloud Console и не требующий локальной среды разработки, поэтому это руководство можно выполнить полностью в облаке с помощью веб-браузера. Cloud Shell особенно полезен, если вы разрабатываете или планируете продолжать разработку с использованием продуктов и API GCP . Если говорить более конкретно, для этой лаборатории кода в Cloud Shell уже предварительно установлены обе версии Python.
В Cloud Shell также установлен IPython ... это интерактивный интерпретатор Python более высокого уровня, который мы рекомендуем, особенно если вы являетесь частью сообщества специалистов по науке о данных или машинному обучению. Если да, то IPython является интерпретатором по умолчанию для Jupyter Notebooks, а также для Colab , Jupyter Notebooks, размещенных в Google Research.
IPython сначала отдает предпочтение интерпретатору Python 3, но возвращается к Python 2, если версия 3.x недоступна. Доступ к IPython можно получить из Cloud Shell, но его также можно установить в локальной среде разработки. Выйдите с помощью ^D (Ctrl-d) и примите предложение выйти. Пример вывода запуска ipython
будет выглядеть так:
$ 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]:
Если вы не предпочитаете IPython, вполне приемлемо использование стандартного интерактивного интерпретатора Python (либо Cloud Shell, либо вашей локальной среды разработки) (также выйдите с помощью ^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. >>>
В лаборатории кода также предполагается, что у вас есть инструмент установки pip
(менеджер пакетов Python и преобразователь зависимостей). Он поставляется в комплекте с версиями 2.7.9+ или 3.4+. Если у вас более старая версия Python, инструкции по установке см. в этом руководстве. В зависимости от ваших разрешений вам может потребоваться доступ sudo
или суперпользователя, но обычно это не так. Вы также можете явно использовать pip2
или pip3
для выполнения pip
для определенных версий Python.
В оставшейся части лабораторной работы предполагается, что вы используете Python 3 — для Python 2 будут предоставлены конкретные инструкции, если они существенно отличаются от версии 3.x.
*Создавать и использовать виртуальные среды.
Этот раздел является необязательным и действительно необходим только тем, кому необходимо использовать виртуальную среду для этой лаборатории кода (согласно предупреждению на боковой панели выше). Если на вашем компьютере установлен только Python 3, вы можете просто ввести эту команду, чтобы создать виртуальную среду с именем my_env
(при желании вы можете выбрать другое имя):
virtualenv my_env
Однако, если на вашем компьютере установлены Python 2 и 3, мы рекомендуем вам установить виртуальную среду Python 3, что можно сделать с помощью -p flag
следующим образом:
virtualenv -p python3 my_env
Войдите в свой недавно созданный виртуальный мир, «активировав» его следующим образом:
source my_env/bin/activate
Подтвердите, что вы находитесь в среде, наблюдая, что приглашению оболочки теперь предшествует имя вашей среды, т. е.
(my_env) $
Теперь вы сможете pip install
любые необходимые пакеты, выполнять код внутри этого eivonment и т. д. Еще одним преимуществом является то, что если вы полностью все испортите, попадете в ситуацию, когда ваша установка Python повреждена и т. д., вы можете сбросить это всю среду, не затрагивая остальную часть вашей системы.
5. Установите клиентскую библиотеку API Google для Python.
Для этой лаборатории кода требуется использование клиентской библиотеки Google API для Python , поэтому либо это простой процесс установки, либо вам вообще ничего не придется делать.
Ранее мы рекомендовали вам рассмотреть возможность использования Cloud Shell для удобства. Вы можете пройти все руководство из веб-браузера в облаке. Еще одна причина использовать Cloud Shell — многие популярные инструменты разработки и необходимые библиотеки уже предустановлены .
*Установка клиентских библиотек.
( необязательно ) Это можно пропустить, если вы используете Cloud Shell или локальную среду, в которой уже установлены клиентские библиотеки. Это нужно делать только в том случае, если вы разрабатываете локально и не установили их (или не уверены, что установили). Самый простой способ — использовать pip
(или pip3
) для установки (включая обновление самого pip
при необходимости):
pip install -U pip google-api-python-client oauth2client
Подтвердить установку
Эта команда устанавливает клиентскую библиотеку, а также все пакеты, от которых она зависит. Независимо от того, используете ли вы Cloud Shell или свою собственную среду, убедитесь, что клиентская библиотека установлена, импортировав необходимые пакеты, и убедитесь, что нет ошибок импорта (и вывода):
python3 -c "import googleapiclient, httplib2, oauth2client"
Если вместо этого вы используете Python 2 (из Cloud Shell), вы получите предупреждение о том, что его поддержка устарела:
******************************************************************************* 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. *******************************************************************************
Как только вы сможете успешно выполнить команду импорта «test» (без ошибок/вывода), вы готовы начать общение с API Google!
Краткое содержание
Поскольку это вводная лаборатория кода, предполагается, что вы новичок в использовании API Google и Google Workspace. Если у вас уже есть опыт создания проектов и создания авторизации пользователей «Идентификаторы клиента OAuth». Если да, создайте или повторно используйте существующий проект, создайте или повторно используйте существующий идентификатор клиента OAuth, пропустите следующие два модуля и перейдите сразу к «Отображение приложения «Файлы и папки на Диске»» или перейдите к «Расширенное использование консоли разработчика». ", чтобы просмотреть эти шаги с меньшим количеством указаний.
6. Укажите проект в облачной консоли
Для приложения, использующего API Google, требуется проект. Они управляются в консоли разработчиков Google Cloud или просто «devconsole». В этой лаборатории кода мы будем использовать только Google Drive API, поэтому у нас есть волшебная ссылка (ниже в шаге 1), которая:
- Переносит вас в консоль разработчика
- Познакомит вас с созданием нового проекта (или выбором существующего) и
- Автоматически включает Drive API
Давай сделаем это!
- Перейдите на console.developers.google.com/start/api?id=drive и войдите в свою учетную запись Google.
- Если у вас еще нет проектов, вы увидите этот экран, чтобы принять Условия использования Google API :
Как только вы примете условия, будет создан новый проект под названием « Мой проект », и Drive API автоматически включится. 3. Если вместо этого вы уже создали проект (возможно, вашу предыдущую кодовую лабораторию?), вместо этого вы увидите этот экран:
Когда вы нажимаете раскрывающееся меню «Создать проект» , выберите существующий проект или действительно создайте новый проект.
После того как вы сделаете свой выбор (новый или существующий проект), Drive API будет автоматически включен для вас. 4. Вы узнаете, что Drive API включен, получив следующее подтверждение:
5. Нажмите Перейти к учетным данным , чтобы перейти к следующему шагу.
7. *Авторизация запросов API (авторизация пользователя)
Этот раздел можно пропустить, если вы уже создали учетные данные для авторизации учетной записи пользователя и знакомы с процессом. Это отличается от авторизации учетной записи службы, метод которой отличается, поэтому продолжайте ниже.
Введение в авторизацию (плюс некоторую аутентификацию)
Чтобы отправлять запросы к API, ваше приложение должно иметь соответствующую авторизацию . Аналогичное слово «Аутентификация» описывает учетные данные для входа — вы подтверждаете свою подлинность при входе в свою учетную запись Google с помощью логина и пароля. После аутентификации следующим шагом будет определение того, авторизованы ли вы (точнее, ваш код ) на доступ к данным, таким как файлы больших двоичных объектов в облачном хранилище или личные файлы пользователя на Google Диске.
API Google поддерживают несколько типов авторизации, но наиболее распространенным среди пользователей Google Workspace API является авторизация пользователя, поскольку пример приложения в этой лаборатории кода обращается к данным, принадлежащим конечным пользователям. Эти конечные пользователи должны предоставить вашему приложению разрешение на доступ к их данным . Это означает, что ваш код должен получить учетные данные учетной записи пользователя OAuth2.
Чтобы получить учетные данные OAuth2 для авторизации пользователя, вернитесь в диспетчер API и выберите вкладку «Учетные данные» в левой навигационной панели:
Когда вы доберетесь туда, вы увидите все свои учетные данные в трех отдельных разделах:
Первый предназначен для ключей API , второй — для идентификаторов клиентов OAuth 2.0 и последний — для учетных записей службы OAuth2 — мы используем тот, что посередине.
Создание учетных данных
На странице «Учетные данные» нажмите кнопку «+ Создать учетные данные» вверху, после чего появится диалоговое окно, в котором вы должны выбрать «Идентификатор клиента OAuth:».
На следующем экране у вас есть 2 действия: настроить «экран согласия» авторизации вашего приложения и выбрать тип приложения:
Если вы не установили экран согласия, вы увидите предупреждение в консоли, и вам нужно будет сделать это сейчас. (Пропустите следующие шаги, если ваш экран согласия уже настроен.)
Экран согласия OAuth
Нажмите «Настроить экран согласия», где выберите «Внешнее» приложение (или «Внутреннее», если вы являетесь клиентом Google Workspace [ранее «Google Workspace»]):
Обратите внимание, что для целей этого упражнения не имеет значения, что вы выберете, поскольку вы не публикуете образец своей лаборатории кода. Большинство людей выберут «Внешний», чтобы перейти к более сложному экрану, но вам действительно нужно заполнить только поле «Имя приложения» вверху:
Единственное, что вам нужно на данный момент, — это просто имя приложения, поэтому выберите кого-нибудь, кто соответствует вашей кодовой лаборатории, и нажмите « Сохранить» .
Создание идентификатора клиента OAuth (авторизация учетной записи пользователя)
Теперь вернитесь на вкладку «Учетные данные», чтобы создать идентификатор клиента OAuth2 . Здесь вы увидите различные идентификаторы клиентов OAuth, которые вы можете создать:
Мы разрабатываем инструмент командной строки Other , поэтому выберите его и нажмите кнопку «Создать» . Выберите имя идентификатора клиента, соответствующее создаваемому вами приложению, или просто выберите имя по умолчанию, обычно «Другой клиент N ».
Сохранение ваших учетных данных
- Появится диалоговое окно с новыми учетными данными; нажмите ОК , чтобы закрыть
- Вернувшись на страницу «Учетные данные», прокрутите вниз до раздела «Идентификаторы клиентов OAuth2», найдите и щелкните значок загрузки.
в крайнем правом нижнем углу вашего вновь созданного идентификатора клиента.
- Откроется диалоговое окно для сохранения файла с именем
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
, скорее всего, в папке «Загрузки» . Мы рекомендуем сократить имя до более простого, напримерclient_secret.json
(именно его использует пример приложения), а затем сохранить его в каталоге/папке, где вы будете создавать пример приложения в этой лаборатории кода.
Краткое содержание
Теперь, имея учетные данные, вы готовы получить доступ к Drive API из своего приложения. Помните, что цель идентификатора клиента OAuth заключается в том, что ваши пользователи должны предоставить вашему приложению разрешение на доступ к своим данным на Google Диске.
ПРИМЕЧАНИЕ . Более подробная информация о создании проектов, включении API и получении учетных данных вручную, т. е. без использования описанного выше «мастера», будет доступна после завершения этой кодовой лаборатории для дальнейшего изучения.
8. Отображение приложения «Файлы и папки на Диске»
В локальной среде разработки или в Cloud Shell в том же каталоге, где находится файл учетных данных client_id.json
, создайте новый файл Python с именем drive_list.py
и добавьте строки кода ниже:
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'])
Структура приложения
В этом приложении есть три основных раздела:
- Импорт Python для реализации функциональности библиотеки
- Получение учетных данных приложения
- Получение имен файлов и папок, а также типов MIME на Google Диске и отображении пользователя.
ПРИМЕЧАНИЕ . Более глубокое погружение в код и просмотр построчного объяснения доступны после завершения этой лаборатории кода для дальнейшего изучения.
Запуск приложения
Назовите этот файл примерно так: drive_list.py
. При первом запуске скрипта у него не будет прав на доступ к файлам пользователя на Диске (вашим). Вывод выглядит следующим образом с приостановленным выполнением:
$ 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
Из локальной среды разработки
Выполнение сценария командной строки приостанавливается, когда открывается окно браузера и отображается диалоговое окно разрешений OAuth2:
Здесь приложение запрашивает у пользователя разрешения, которые запрашивает код (через переменную SCOPES
). В данном случае это возможность просмотра метаданных файла с Google Диска пользователя. Да, в вашем коде эти области разрешений отображаются как URI, но они переводятся на язык, указанный вашим языковым стандартом в диалоговом окне потока OAuth2. Пользователь должен предоставить явную авторизацию для запрошенных разрешений, иначе часть кода «выполнение потока» выдаст исключение, и сценарий не продолжит работу дальше.
ПРИМЕЧАНИЕ . Некоторые пользователи используют несколько браузеров, и запрос на авторизацию может появиться в непредпочтительном браузере. В этом случае просто скопируйте весь URL-адрес из окна браузера, который вы не хотите использовать, и вставьте в адресную строку браузера, который вы хотите использовать.
Из Cloud Shell
Если вы не обратили внимания и запустили программу в Cloud Shell, окно браузера не открылось, и вы застряли. Поймите, что диагностическое сообщение внизу предназначалось вам... вот оно:
If your browser is on a different machine then exit and re-run this application with the command-line parameter --noauth_local_webserver
Когда вы запустите его таким образом, вместо этого вы получите следующий вывод:
$ 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:
Следуя инструкциям и перейдя на другую вкладку браузера с этим URL-адресом, вы получите практически идентичный опыт, описанный выше для локальных сред разработки. Ключевое отличие заключается в конце, где вы получаете еще один экран с кодом подтверждения для ввода в Cloud Shell:
Вырежьте и вставьте этот код в окно терминала.
Краткое содержание
Как только пользователь нажмет кнопку «Разрешить» и/или код подтверждения будет вставлен в командную строку, приложение будет (продолжать) работать, поэтому ожидайте увидеть выходные данные, состоящие из файлов/папок на Диске и их MIME-типов. Вот пример одного из наших тестовых аккаунтов:
$ 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 . . .
Обратите внимание, что при последующих выполнениях вам больше не запрашивается авторизация (поскольку она кэшируется библиотеками аутентификации), и вы сразу переходите к выводу. Разве не интересно впервые увидеть свои документы в терминале? Мы так думаем!
9. Заключение
Теперь вы готовы узнать больше о функциях Drive API или изучить другие Google Workspace (Gmail, Google Docs, Таблицы, Презентации, Календарь) и другие API Google (Карты, Analytics, YouTube и т. д.). Поздравляю, что дошли до конца!
Код, представленный в этой лаборатории, также доступен в репозитории GitHub по адресу github.com/googlecodelabs/gsuite-apis-intro . (Мы стремимся синхронизировать эту кодовую лабораторию с репозиторием.) Готовы двигаться дальше? Ниже приведены различные ресурсы, к которым вы можете получить доступ, чтобы помочь вам глубже изучить материал, представленный в этой лаборатории кода, или если вы хотите расширить свой разум и изучить другие способы программного доступа к технологиям Google.
Как упоминалось ранее, если вы не являетесь обычным разработчиком Python, мы предлагаем вам переделать этот пример кода на вашем любимом языке разработки. Клиентские библиотеки для поддерживаемых языков доступны здесь .
Дополнительное исследование
Теперь, когда у вас есть некоторый опыт работы с Drive API, ниже приведены некоторые рекомендуемые упражнения для дальнейшего развития ваших навыков:
- ZIP-файлы . Напишите приложение, которое создает резервные копии нескольких ZIP-архивов на Диске, распаковывая их на лету, чтобы каждое имя ZIP-файла было именем папки, в которую эти файлы помещаются. ДОПОЛНИТЕЛЬНАЯ КРЕДИТАЦИЯ: поддержка рекурсивных ZIP-архивов в других ZIP-файлах с папками Диска, встроенными в другие папки. Если вы сдаетесь, посмотрите этот пример приложения Node.js.
- Фотоальбомы . Напишите начало инструмента для создания фотоальбомов, который загружает несколько изображений на Google Диск, группируя их в отдельные папки по меткам времени и геолокации. ДОПОЛНИТЕЛЬНАЯ КРЕДИТАЦИЯ: найдите библиотеку манипуляций с изображениями с открытым исходным кодом и соедините все фотографии в каждой папке, чтобы представить события, которые вы могли пережить (поездка, ужин и т. д.).
- Изучите GCP : напишите приложение, которое соединяет Google Workspace и Google Cloud Platform (GCP). Напишите инструмент, который выполняет резервное копирование файлов изображений с Google Диска в Google Cloud Storage (GCS), еще одно решение «хранилище файлов в облаке». Хотите верьте, хотите нет, но использовать GCS будет проще, чем Drive, благодаря расширенным клиентским библиотекам.
- Анализ и запись . Расширьте свое решение до №3, проанализировав каждое резервное копирование изображения, передав его в API Google Cloud Vision и получив верхние (3, 5, 10) «метки» того, что API видит в этих изображениях. Для каждого изображения напишите строку в Google Sheet, содержащую анализ Cloud Vision, а также местоположение его резервной копии в GCS. Если вы сдаетесь, посмотрите эту кодовую лабораторию Python .
10. Дополнительные ресурсы
Документация
- Документация по API Google Диска (REST API и собственный SDK/API для Android)
- Другая документация по API Google Workspace
- Другая документация по API Google
- Клиентские библиотеки Google API
- Документация OAuth2
Похожие и общие видео
- Создание новых проектов Google API ( сообщение в блоге и видео )
- Обзор шаблонного кода авторизации Python ( видео )
- Размещение файлов на Google Диске ( видео , запись в блоге )
- Видеотека API Google Диска
- Серия видеороликов Launchpad Online (предшественник...)
- Серия видеороликов Google Workspace Dev Show
Новости и обновления
- Блог разработчиков Google Workspace
- Твиттер разработчиков Google Workspace (@GSuiteDevs)
- Ежемесячный информационный бюллетень для разработчиков Google Workspace
Другие лаборатории разработки
Вводный
- [Скрипт приложений] Введение в скрипт Google Apps
Средний
- [Apps Script] Инструмент командной строки CLASP Apps Script
- [Скрипт приложений] Дополнения Gmail
- [Apps Script] Надстройка «Документы» и GCP Natural Language API
- [Скрипт приложений] Платформа ботов Hangouts Chat
- [REST API] Пользовательский инструмент создания отчетов (API Таблиц)
- [REST API] Пользовательский генератор слайдов для анализатора BigQuery лицензии Github (API Slides+BigQuery)
Передовой
- [REST API] Рабочий процесс облачной обработки изображений (API Drive, Cloud Storage, Cloud Vision, Sheets)
Справочные приложения
- Конвертер Markdown в Google Slides (Slides REST API)
11. * Подробное объяснение применения
Этот дополнительный раздел следует использовать для самостоятельного изучения после завершения занятия для заполнения любых пробелов, которые могли возникнуть, или для дальнейшего исследования.
Импорт Python для реализации функциональности библиотеки
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
- Первый оператор
import
позволяет этому коду работать на Python 2 — его можно полностью удалить, если вы используете только Python 3. - Одним из правил стиля Python является разделение импорта стандартной библиотеки и сторонних модулей — для этого и нужна пустая строка.
- Следующие три импорта приносят необходимые классы и функции из клиентской библиотеки Google API... все они необходимы нам для написания этого приложения. Вкратце, вот что они делают:
-
googleapiclient
фокусируется на подключении к API Google -
httplib2
предоставляет HTTP-клиент для использования приложением. -
oauth2client
помогает нам управлять учетными данными OAuth2.
Авторизация и получение учетных данных приложения
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()))
SCOPES
ПРИЛОЖЕНИЯ — это разрешения, которые приложение будет запрашивать у запускающего его пользователя. Чтобы обеспечить безопасность пользовательских данных, приложения не могут запускаться без разрешения.- Лучше всего использовать самые строгие разрешения, необходимые для работы вашего приложения. Почему?
- Разве это не раздражает, когда приложение запрашивает большой набор разрешений при его установке или запуске? Угадай, что? Теперь вы находитесь на другой стороне медали и запрашиваете у своих пользователей все эти разрешения. Использование более ограничительных областей позволяет пользователям легче устанавливать ваше приложение, поскольку вы запрашиваете меньший доступ.
- Большинство областей выглядят как длинные URL-адреса, и область метаданных Диска не является исключением.
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
- Токен необходим приложениям для связи с серверами Google. Действительные токены, возвращаемые из Google, будут сохранены в файле хранилища токенов
storage.json
. Если вы не сохраните эти токены, вам придется повторно авторизовать приложение каждый раз, когда вы его запускаете.
store = file.Storage('storage.json')
- Это приложение сначала проверяет, есть ли у нас действительные учетные данные в хранилище (см. условие оператора
if
).
creds = store.get()
if not creds or creds.invalid:
- Если у вас нет учетных данных или срок их действия истек, необходимо создать новый поток авторизации [через
oauth2client.client.flow_from_clientsecrets()
] на основе вашего идентификатора и секрета клиента OAuth в файлеclient_id.json
, который вы скачали].
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
- Как только в вашем приложении появится поток, его необходимо выполнить, чтобы представить пользователю экран разрешений OAuth2 [через
oauth2client.tools.run_flow()
], описанный и проиллюстрированный выше.
creds = tools.run_flow(flow, store)
- Нажимая «Разрешить» , пользователи соглашаются на доступ вашего приложения к метаданным файлов на Google Диске, а серверы Google возвращают токены для доступа к API. Они возвращаются в виде
creds
и кэшируются в файлеstorage.json
. - На этом этапе ваше приложение теперь имеет действительные учетные данные для выполнения вызовов API. Вызов
googleapiclient.discovery.build()
создает конечную точку службы для используемого вами API. - Чтобы использовать
build()
, передайте имя API ('drive'
) и желаемую версию (в настоящее время'v3'
). - Последний параметр — это HTTP-клиент, который будет использоваться для зашифрованных вызовов API.
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
Получить и отобразить первые 100 файлов/папок и типов MIME на Диске)
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
- Следующая строка кода вызывает метод
list()
в коллекцииfiles()
для Drive API для создания запроса, который немедленно вызывается с помощьюexecute()
. Возвращаетсяdict
Python, из которого мы запрашиваем ключ'files'
, чтобы получить 100 имен файлов и папок с Google Диска пользователя (или меньше, если у вас меньше файлов). - Почему 100? Это значение по умолчанию из
DRIVE.files().list()
. Если вы хотите изменить это число, скажем, только на 10 файлов или на 1000, добавьте в запрос параметрpageSize
:DRIVE.files().list(pageSize=10)
. Вот документация для дополнительных опций. - Последняя часть сценария проходит через каждый файл и отображает их имена и MIME-типы файлов.
Вы написали свое первое приложение, использующее Google REST API... поздравляем! Если не считать кода импорта и авторизации, этот скрипт на самом деле представляет собой всего лишь пару строк кода (то, что вы видите выше). Большинство API Google работают аналогичным образом, и вам нужно будет только создать конечные точки службы для каждого из них, которые вы хотите использовать.
Использование более одного API Google в приложении
Да, вы, безусловно, можете использовать более одного API в одном приложении! Вот фрагмент кода Python для приложения, которое повторно использует один и тот же HTTP-клиент и создает конечные точки службы для трех API Google (да, также с тремя разными 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)
Мы предполагаем, что этот код может быть частью приложения, которое генерирует несколько наборов слайдов (API Slides) на основе данных электронных таблиц (API Sheets) и использует шаблон слайда, который копируется (API Drive) для каждого созданного слайда. Хотя такого приложения не существует, вы сможете создать нечто подобное, используя два существующих образца, созданных командой Google Workspace в качестве строительных блоков:
- Замена текста и изображений в слайдах ( сообщения в блоге и видео ) — использует Drive API для копирования набора шаблонов слайдов, а затем использует Slides API для изменения заполнителей текста и изображений.
- Создание слайдов из данных электронных таблиц ( сообщений в блогах и видео ) — считывает данные из электронной таблицы (API Sheets) и создает слайды (API Slides) на основе этих данных.
Ваша задача: создать это приложение!
12. *Расширенное использование консоли разработчика.
В этом необязательном разделе мы опишем, как создавать проекты в консоли разработчика, включать API и получать учетные данные — и все это без использования мастера, как указано выше в лаборатории кода. Это для пользователей среднего уровня, которым достаточно комфортно делать это вручную или которые хотят научиться это делать.
Укажите проект в облачной консоли
Каждый раз, когда вы пишете приложение с использованием API Google, вам необходим проект. Вы можете повторно использовать существующий проект или создать новый. Это происходит в облачной консоли. Некоторые лаборатории кода предоставляют волшебную ссылку (например, мастер установки), которая поможет вам быстро приступить к работе, пропуская многие необходимые шаги. Но не все из них это делают, поэтому они представляют собой общие инструкции по созданию проектов.
Вы можете создавать проекты на большинстве экранов облачной консоли, если вы вошли в систему, используя свои учетные данные Google, и видите раскрывающийся список проектов в верхней части консоли. Обратите внимание, что большинство снимков экрана здесь взяты из API-менеджера, также известного как Консоль разработчика (к которому легко добраться, нажав «Менеджер API» в левой навигационной панели или напрямую указав в браузере console.developers.google.com ).
- Если у вас еще нет проектов, вас могут перевести на...
- страница панели управления :
- страница библиотеки :
- или совершенно пустая страница:
Если это произойдет с вами, просто обновите браузер, чтобы перейти на страницу библиотеки .
- Находитесь ли вы на страницах «Панель управления» или «Библиотека» , нажмите кнопку выбора проекта в верхней части страницы:
- Далее вы получите диалог селектора. Нажмите на «+» с правой стороны, чтобы создать новый проект:
- После того, как вы нажмите на «+», появится новая страница проекта . Все учетные записи потребителей по умолчанию получают 12 проектов. Прежде чем создать свой первый проект, вам придется принять условия обслуживания Google :
После того, как вы сделали это, при создании будущих проектов уступает вопросы по электронной почте и условия вопросов об обслуживании:
5. Если вы создали хотя бы один проект в прошлом, после входа в систему вы попадете на приборную панель последнего проекта, над которым вы работали. Оттуда создайте новый проект, так как вы выбираете Select A Project > + . 6. Как только ваш новый проект будет создан, вы вернетесь на страницу панели инструментов :
Теперь вы успешно создали проект и готовы двигаться дальше, выбрав API, которые вы хотите использовать для своего проекта.
Включить Google API
Прежде чем вы сможете начать использовать Google API, вы должны включить их. Приведенный ниже пример показано, что вы бы сделали, чтобы включить API Cloud Vision. В этом коделабе вы можете использовать один или несколько API и должны выполнять аналогичные шаги, чтобы включить их до использования.
Из Cloud Shell
Используя облачную оболочку, вы можете включить API, используя следующую команду:
gcloud services enable vision.googleapis.com
Из облачной консоли
Вы также можете включить API Vision в менеджере API. В облачной консоли перейдите в API Manager и выберите «Библиотека».
В панели поиска начните набирать «Vision», затем выберите Vision API, когда он появляется. Это может выглядеть примерно так, когда вы печатаете:
Выберите API Cloud Vision, чтобы получить диалог, который вы видите ниже, затем нажмите кнопку «Включить»:
Расходы
В то время как многие API Google можно использовать без сборов, использование GCP (продукты и API) не является бесплатным. При включении API Vision API (как описано выше), вас могут попросить активный счет выставления счетов. На информацию о ценах API Vision должна ссылаться пользователь, прежде чем включить. Имейте в виду, что определенные продукты Google Cloud Platform (GCP) имеют «всегда бесплатный» уровень, для которого вы должны превышать, чтобы понести счета. Для целей CodeLab каждый призыв к API Vision считается против этого свободного уровня, и до тех пор, пока вы остаетесь в пределах его пределов в совокупности (в течение каждого месяца), вы не должны нести каких -либо обвинений.
Некоторые API Google, то есть Google Workspace, обладают использованием ежемесячной подписки, так что нет прямых счетов за использование Gmail, Google Drive, Calendar, Docs, листов и Slides API, например. Различные продукты Google выставляются по -разному, поэтому обязательно ссылайтесь на документацию вашего API для этой информации.
Краткое содержание
В этом CodeLab вам нужно только включить API Google Drive, поэтому следуйте указаниям выше и найдите «Диск». Продолжайте вперед, как только он будет включен.
Авторизовать запросы API (авторизация пользователя)
Вступление в авторизацию (плюс некоторая аутентификация)
Чтобы сделать запросы на API, ваше приложение должно иметь надлежащее разрешение . Аутентификация , аналогичное слово, описывает учетные данные для входа в систему - вы аутентифицируете себя при входе в свою учетную запись Google с помощью входа и пароля. После аутентификации следующим шагом является то, есть ли вы - или, скорее, ваш код , авторизован для доступа к данным, таким как файлы Blob на облачном хранилище или личные файлы пользователя на Google Drive.
Google API поддерживают несколько типов авторизации, но наиболее распространенным для пользователей API API Google является авторизация пользователя , поскольку пример приложения в этом CodeLab обращается к данным, принадлежащим конечным пользователям. Эти конечные пользователи должны предоставить разрешение на ваше приложение на доступ к своим данным . Это означает, что ваш код должен получить учетную запись пользователя OAuth2.
Чтобы получить учетные данные OAuth2 для авторизации пользователя, вернитесь к Manager API и выберите вкладку «Учетные данные» на левом навите:
Когда вы доберетесь туда, вы увидите все свои учетные данные в трех отдельных разделах:
Первый для ключей API , вторых идентификаторов клиентов OAuth 2.0 и последних сервисных актов OAuth2 - мы используем то, что посередине.
Создание учетных данных
На странице учетных данных нажмите кнопку «Создать учетные данные» в верхней части, которая затем дает вам диалог, в котором вы выберете «ID клиента OAuth:»
На следующем экране у вас есть 2 действия: настройка авторизации вашего приложения «экран согласия» и выбор типа приложения:
Если вы не установили экран согласия, вы увидите предупреждение в консоли и нужно сделать это сейчас. (Пропустите эти следующие шаги, если экран вашего согласия уже настроен.)
Оаут экран согласия
Нажмите на «Настройка экрана согласия», где вы выбираете приложение «внешнее» (или «внутреннее», если вы клиент Google Workspace):
Обратите внимание, что для целей этого упражнения не имеет значения, что вы выбираете, потому что вы не публикуете свой образец CodeLab. Большинство людей выберут «внешний», который будет взят на более сложный экран, но вам действительно нужно только завершить поле «Имя приложения» вверху:
Единственное, что вам нужно в это время, - это просто имя приложения, поэтому выберите кого -то, кто отражает коделаб, который вы делаете, нажмите «Сохранить» .
Создание идентификатора клиента OAuth (пользователь Acct Auth)
Теперь вернитесь на вкладку учетных данных, чтобы создать идентификатор клиента OAuth2 . Здесь вы увидите различные идентификаторы клиентов OAuth, которые вы можете создать:
Мы разрабатываем инструмент командной строки, который является другим , поэтому выберите его, затем нажмите кнопку «Создать» . Выберите имя идентификатора клиента, отражающее приложение, которое вы создаете, или просто возьмите имя по умолчанию, которое обычно является «другим клиентом N ».
Сохранение ваших полномочий
- Появляется диалог с новыми учетными данными; Нажмите ОК , чтобы закрыть
- Вернуться на страницу учетных данных, прокрутите вниз в раздел «Идентификаторы клиентов OAuth2» Найти и нажмите значок загрузки
На крайнем правом дне вашего недавно созданного идентификатора клиента.
- Это открывает диалог для сохранения файла с именем
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
, вероятно, в вашей папке загрузки . Мы рекомендуем укорочить с более легким именем, какclient_secret.json
(это то, что использует приложение), а затем сохраняет его в каталог/папку, где вы будете создавать приложение в этом коделабе.