В этом руководстве объясняется, как использовать OAuth 2.0 с учетными данными пользователей Google для доступа к Chat API . Аутентификация и авторизация с использованием учетных данных пользователя позволяет приложениям Chat получать доступ к данным пользователя и выполнять операции от имени пользователя, прошедшего проверку подлинности. При проверке подлинности от имени пользователя приложение получает те же разрешения, что и этот пользователь, и может выполнять действия, как если бы они выполнялись этим пользователем. Однако эти приложения чата не могут быть опубликованы публично. Дополнительную информацию см. в разделе Публикация приложений Google Chat .
После аутентификации и авторизации вызова API с учетными данными пользователя приложения для чата могут выполнять следующие действия:
- Создавайте чаты.
- Добавляйте пользователей в чаты и групповые беседы.
- Работайте с пользовательскими данными в других API Workspace, таких как следующие:
- Создавайте события в Календаре Google.
- Записывайте элементы в Google Sheets.
- Отправьте электронное письмо с помощью Gmail.
Когда приложение выполняет действие с аутентификацией пользователя (например, создает пространство), Google Chat отображает сообщение об атрибуции, в котором пользователям сообщается имя приложения, выполнившего действие для авторизовавшего его пользователя.
Чтобы узнать больше о том, когда приложения Chat требуют проверки подлинности и какой тип проверки подлинности использовать, см. раздел Типы обязательной проверки подлинности в обзоре проверки подлинности и авторизации Chat API.
Если вы являетесь администратором домена, вы можете предоставить делегирование полномочий на уровне домена, чтобы авторизовать учетную запись службы приложения для доступа к данным ваших пользователей, не требуя согласия каждого пользователя. После настройки делегирования на уровне домена учетная запись службы может олицетворять учетную запись пользователя . Хотя для проверки подлинности используется учетная запись службы, делегирование на уровне домена олицетворяет пользователя и поэтому считается проверкой подлинности пользователя . Любую функциональность, требующую аутентификации пользователя, можно использовать делегирование на уровне домена.
Чтобы использовать Google Chat API для доступа или изменения ресурсов организации Google Workspace, пользователь должен быть членом этой организации. Внешние пользователи или пользователи без аккаунта Google Workspace с доступом к Google Chat не поддерживаются.
Предпосылки
Питон
- Python 3.6 или выше
- Инструмент управления пакетами pip
- Аккаунт Google Workspace с доступом к Google Chat .
- Проект Google Cloud с включенным и настроенным API чата. Чтобы создать проект и включить API, см. раздел Создание проекта и включение API .
- Приложение чата, настроенное на странице конфигурации API чата в консоли Google Cloud. Чтобы создать и настроить приложение для чата, см. статью Создание приложения Google Chat с помощью облачных функций .
Шаг 1. Установите клиентскую библиотеку Google.
Если вы еще не установили клиентские библиотеки Google для выбранного вами языка, выполните следующую команду в интерфейсе командной строки:
Питон
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
Вы можете использовать любой язык, поддерживаемый нашими клиентскими библиотеками .
Шаг 2. Настройте экран согласия OAuth, укажите области действия и зарегистрируйте свое приложение.
Когда вы используете OAuth 2.0 для авторизации, Google отображает пользователю экран согласия, включая сводку вашего проекта, его политики и запрошенные области авторизации. Настройка экрана согласия OAuth вашего приложения определяет, что Google показывает пользователям и рецензентам приложения, и регистрирует ваше приложение, чтобы вы могли опубликовать его позже.
Для всех приложений, использующих OAuth 2.0, требуется настройка экрана согласия, но вам нужно только указать области действия для приложений, используемых людьми за пределами вашей организации Google Workspace.
В консоли Google Cloud выберите > API и службы > Экран согласия OAuth .
Выберите тип пользователя для своего приложения, затем нажмите «Создать» .
Заполните регистрационную форму приложения, затем нажмите «Сохранить и продолжить» .
Щелкните Добавить или удалить области . Добавьте и проверьте области авторизации, необходимые вашему приложению, нажмите «Обновить» , затем нажмите «Сохранить и продолжить» .
Просмотрите сводку регистрации приложения. Нажмите «Редактировать» , чтобы внести изменения, или нажмите «Вернуться к панели управления» .
Шаг 3. Создайте учетные данные идентификатора клиента OAuth в консоли Google Cloud.
Чтобы пройти аутентификацию в качестве конечного пользователя и получить доступ к данным пользователя в своем приложении, вам необходимо создать один или несколько идентификаторов клиента OAuth 2.0 . Идентификатор клиента используется для идентификации одного приложения на серверах OAuth Google. Если ваше приложение работает на нескольких платформах, таких как Android, iOS и Интернет, вам необходимо создать отдельный идентификатор клиента для каждой платформы.
Создайте учетные данные идентификатора клиента OAuth
Выберите тип приложения , чтобы получить конкретные инструкции по созданию идентификатора клиента OAuth:
веб приложение
- В консоли Google Cloud выберите > API и службы > Учетные данные .
- Нажмите «Создать учетные данные» > «Идентификатор клиента OAuth» .
- Щелкните Тип приложения > Веб-приложение .
- В поле Имя введите имя учетных данных. Это имя отображается только в консоли Google Cloud.
- Добавьте авторизованные URI, связанные с вашим приложением:
- Клиентские приложения (JavaScript) — в разделе «Авторизованные источники JavaScript» нажмите «Добавить URI» . Затем введите URI, который будет использоваться для запросов браузера. Это определяет домены, из которых ваше приложение может отправлять запросы API на сервер OAuth 2.0.
- Серверные приложения (Java, Python и т. д.) . В разделе Авторизованные URI перенаправления нажмите Добавить URI . Затем введите URI конечной точки, на которую сервер OAuth 2.0 может отправлять ответы.
- Щелкните Создать . Появится экран создания клиента OAuth, показывающий ваш новый идентификатор клиента и секрет клиента.
Обратите внимание на идентификатор клиента. Секреты клиента не используются для веб-приложений.
- Нажмите ОК . Вновь созданные учетные данные отображаются в разделе Идентификаторы клиентов OAuth 2.0 .
Андроид
- В консоли Google Cloud выберите > API и службы > Учетные данные .
- Нажмите «Создать учетные данные» > «Идентификатор клиента OAuth» .
- Щелкните Тип приложения > Android .
- В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google Cloud.
- В поле «Имя пакета» введите имя пакета из файла
AndroidManifest.xml
. - В поле «Отпечаток сертификата SHA-1» введите сгенерированный отпечаток сертификата SHA-1 .
- Щелкните Создать . Появится экран создания клиента OAuth, показывающий ваш новый идентификатор клиента.
- Нажмите ОК . Вновь созданные учетные данные отображаются в разделе «Идентификаторы клиентов OAuth 2.0».
iOS
- В консоли Google Cloud выберите > API и службы > Учетные данные .
- Нажмите «Создать учетные данные» > «Идентификатор клиента OAuth» .
- Щелкните Тип приложения > iOS .
- В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google Cloud.
- В поле «Идентификатор пакета» введите идентификатор пакета, указанный в файле
Info.plist
приложения. - Необязательно: если ваше приложение появилось в Apple App Store, введите идентификатор App Store.
- Необязательно: в поле «Идентификатор команды» введите уникальную строку из 10 символов, созданную Apple и назначенную вашей команде.
- Щелкните Создать . Появится экран создания клиента OAuth, показывающий ваш новый идентификатор клиента и секрет клиента.
- Нажмите ОК . Вновь созданные учетные данные отображаются в разделе «Идентификаторы клиентов OAuth 2.0».
Приложение Chrome
- В консоли Google Cloud выберите > API и службы > Учетные данные .
- Нажмите «Создать учетные данные» > «Идентификатор клиента OAuth» .
- Нажмите Тип приложения > Приложение Chrome .
- В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google Cloud.
- В поле «Идентификатор приложения» введите уникальную 32-символьную строку идентификатора вашего приложения. Вы можете найти это значение идентификатора в URL-адресе вашего приложения в Интернет-магазине Chrome и на панели инструментов разработчика Интернет-магазина Chrome .
- Щелкните Создать . Появится экран создания клиента OAuth, показывающий ваш новый идентификатор клиента и секрет клиента.
- Нажмите ОК . Вновь созданные учетные данные отображаются в разделе «Идентификаторы клиентов OAuth 2.0».
Настольное приложение
- В консоли Google Cloud выберите > API и службы > Учетные данные .
- Нажмите «Создать учетные данные» > «Идентификатор клиента OAuth» .
- Нажмите Тип приложения > Приложение для ПК .
- В поле Имя введите имя учетных данных. Это имя отображается только в консоли Google Cloud.
- Щелкните Создать . Появится экран создания клиента OAuth, показывающий ваш новый идентификатор клиента и секрет клиента.
- Нажмите ОК . Вновь созданные учетные данные отображаются в разделе идентификаторов клиентов OAuth 2.0.
Телевизоры и ограниченные устройства ввода
- В консоли Google Cloud выберите > API и службы > Учетные данные .
- Нажмите «Создать учетные данные» > «Идентификатор клиента OAuth» .
- Щелкните Тип приложения > Телевизоры и ограниченные устройства ввода .
- В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google Cloud.
- Щелкните Создать . Появится экран создания клиента OAuth, показывающий ваш новый идентификатор клиента и секрет клиента.
- Нажмите ОК . Вновь созданные учетные данные отображаются в разделе «Идентификаторы клиентов OAuth 2.0».
Универсальная платформа Windows (UWP)
- В консоли Google Cloud выберите > API и службы > Учетные данные .
- Нажмите «Создать учетные данные» > «Идентификатор клиента OAuth» .
- Щелкните Тип приложения > Универсальная платформа Windows (UWP) .
- В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google Cloud.
- В поле «Идентификатор магазина» введите уникальный 12-значный идентификатор вашего приложения в Microsoft Store. Этот идентификатор можно найти в URL-адресе вашего приложения в Microsoft Store и в Центре партнеров .
- Щелкните Создать . Появится экран создания клиента OAuth, показывающий ваш новый идентификатор клиента и секрет клиента.
- Нажмите ОК . Вновь созданные учетные данные отображаются в разделе «Идентификаторы клиентов OAuth 2.0».
Загрузите JSON-файл секрета клиента
Файл секрета клиента — это JSON-представление учетных данных идентификатора клиента OAuth, на которые может ссылаться ваше приложение Chat при предоставлении учетных данных.
В консоли Google Cloud выберите > API и службы > Учетные данные .
В разделе Идентификаторы клиентов OAuth 2.0 щелкните созданный идентификатор клиента.
Нажмите Загрузить JSON .
Сохраните файл как
client_secrets.json
.
Шаг 4. Напишите скрипт, который вызывает Chat API
Следующий код использует клиентскую библиотеку для вызова Chat API . Он проходит аутентификацию с помощью Chat API, используя учетные данные идентификатора клиента OAuth, а затем создает пространство.
Сохраните следующий код в файле с именем chat_space_create_named.py
в том же каталоге, где находится client_secrets.json
:
Питон
from __future__ import print_function
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
# Define your app's authorization scopes.
# When modifying these scopes, delete the file token.json, if it exists.
SCOPES = ["https://www.googleapis.com/auth/chat.spaces.create"]
def main():
'''
Authenticates with Chat API via user credentials,
then creates a Chat space.
'''
flow = InstalledAppFlow.from_client_secrets_file(
'client_secrets.json', SCOPES)
creds = flow.run_local_server()
# Build a service endpoint for Chat API.
service = build('chat', 'v1', credentials=creds)
# Use the service endpoint to call Chat API.
result = service.spaces().create(
# Details about the space to create.
body = {
# To create a named space, set spaceType to SPACE.
'spaceType': 'SPACE',
# The user-visible name of the space.
'displayName': 'API-made'
}
).execute()
# Prints details about the created membership.
print(result)
if __name__ == '__main__':
main()
Шаг 5: Запустите пример скрипта
Чтобы запустить пример, из командной строки перейдите в каталог, содержащий chat_space_create_named.py
и client_secrets.json
, затем выполните следующую команду:
Питон
python3 chat_space_create_named.py
Откроется браузер и предложит вам войти в свою учетную запись Google:
После того, как вы войдете в систему, появится экран согласия OAuth, в котором вам будет предложено предоставить разрешение приложению.
После предоставления разрешения сценарий вызывает Chat API , который в ответ добавляет приложение Chat в область чата. Консоль выводит сведения о вызове API.
Пример устранения неполадок
При запуске chat_space_create_named.py
вы можете получить сообщение об ошибке:
Expected a JSON object with a single property for a "web" or "installed" application
Это сообщение об ошибке означает, что файл client_secrets.json
, загруженный из консоли Google Cloud, не начинается со свойства "web"
или "installed"
. Если после аутентификации в загруженном файле ваш код не сохраняет токен доступа в новом файле, таком как token.json
, то токен доступа записывается в client_secrets.json
, что может вызвать эту ошибку при последующих попытках авторизации.
Чтобы устранить ошибку, снова загрузите секретный файл клиента из консоли Google Cloud и сохраните новый файл на месте текущего файла.
похожие темы
Узнайте, что еще может делать Chat API, изучив справочную документацию по Chat API .