На этой странице объясняется, как повторно активировать приостановленную подписку на Google Workspace, устранив ошибки или вызвав метод subscriptions.reactivate
.
Подписки на Google Workspace приостанавливаются, если из-за ошибки подписка не получает события. Например, подписка приостанавливается, если не удаётся найти целевой ресурс или конечную точку уведомлений. После устранения всех ошибок подписки вы можете повторно активировать её, чтобы снова получать события.
Узнать о приостановленной подписке можно следующими способами:
- Ваше приложение получает событие жизненного цикла о приостановке. Если ваша подписка приостановлена из-за ошибки в конечной точке, вы можете не получить событие жизненного цикла.
- Используйте методы
subscriptions.get
илиsubscriptions.list
, чтобы узнать, установлено ли полеstate
подписки наSUSPENDED
. - Вы получили уведомление о сбое доставки сообщений на вашу конечную точку. Подробнее об отслеживании сбоев доставки сообщений в темы Google Cloud Pub/Sub см. в статье Обработка сбоев сообщений .
Повторно активированные подписки сохраняют исходную дату окончания срока действия. Чтобы продлить срок действия подписки, см. статью Обновление или продление подписки Google Workspace .
Скрипт приложений
- Подписка на Google Workspace. Чтобы создать её, см. раздел Создание подписки .
- Проект Apps Script:
- Используйте свой проект Google Cloud вместо проекта по умолчанию, созданного автоматически Apps Script.
- Для всех областей действия, добавленных для настройки экрана согласия OAuth, необходимо также добавить их в файл
appsscript.json
в проекте Apps Script. Например, если вы указали область действияchat.messages
, добавьте следующее: - Включите расширенную службу
Google Workspace Events
.
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages" ]
Требуется аутентификация и соответствующая область авторизации для каждого типа событий в подписке:
- Для аутентификации пользователя требуется одна или несколько областей действия, поддерживающих хотя бы один из типов событий для подписки. Чтобы определить область действия, см . раздел «Области действия по типу события» .
- Для подписки на событие чата через приложение чата требуется аутентификация приложения с однократным одобрением администратора . Подписка на событие чата через приложение чата доступна в версии Developer Preview .
Питон
- Python 3.6 или выше
- Инструмент управления пакетами pip
- Последние клиентские библиотеки Google для Python. Чтобы установить или обновить их, выполните следующую команду в командной строке:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Подписка на Google Workspace. Чтобы создать её, см. раздел Создание подписки .
Требуется аутентификация и соответствующая область авторизации для каждого типа событий в подписке:
- Для аутентификации пользователя требуется одна или несколько областей действия, поддерживающих хотя бы один из типов событий для подписки. Чтобы определить область действия, см . раздел «Области действия по типу события» .
- Для подписки на событие чата через приложение чата требуется аутентификация приложения с однократным одобрением администратора . Подписка на событие чата через приложение чата доступна в версии Developer Preview .
Выявить и устранить ошибки
Чтобы определить ошибку подписки, проверьте поле suspensionReason
. Это поле можно найти при получении события жизненного цикла о приостановке или с помощью метода subscriptions.get
для просмотра всех полей подписки.
В таблице ниже представлены возможные ошибки, связанные с подпиской, и способы их устранения (если это возможно). Если устранить ошибку не удаётся, вы можете удалить подписку или дождаться истечения её срока действия. API событий Google Workspace автоматически удаляет подписки с истекшим сроком действия.
Ошибка | Описание | Способы решения |
---|---|---|
| Авторизующий пользователь отменил предоставление одной или нескольких областей OAuth, необходимых для подписки. | Получите ещё один токен доступа. Подробнее см. в разделе «Получение токена доступа с сервера авторизации Google» . |
| Целевой ресурс для подписки удален. | Если ресурс восстановлен, вызовите метод reactivate . В противном случае никаких действий не требуется, так как невозможно повторно активировать подписку без исходного целевого ресурса. |
| Авторизованный пользователь больше не имеет доступа к ресурсу для подписки. | Никаких действий не требуется. Вы не сможете повторно активировать подписку, так как пользователь, который её авторизовал, не сможет получить доступ к целевому ресурсу. |
| Приложение Google Workspace не имеет доступа к доставке событий в конечную точку уведомлений. | Предоставьте доступ к учетной записи службы для приложения Google Workspace, которое доставляет события. Учетные записи служб:
Для тем Pub/Sub предоставьте учетной записи службы роль издателя Pub/Sub ( roles/pubsub.publisher) . |
| Конечная точка уведомления не существует или не может быть найдена. | Убедитесь, что конечная точка активна и работает. Для устранения неполадок с темами Pub/Sub см. документацию по устранению неполадок . |
| Конечная точка уведомлений не смогла получить события из-за недостаточной квоты или достижения ограничения по скорости. | Запрос на увеличение квоты. |
| Администратор домена отменил предоставление одной или нескольких областей OAuth для приложения Chat. | Получите одобрение администратора . |
| Приложение чата, авторизовавшее создание подписки, больше не имеет доступа к целевому ресурсу подписки. | Восстановите доступ к целевому ресурсу. Например, если целевой ресурс — это чат-пространство, приложению Chat может потребоваться членство в этом пространстве. |
Повторно активировать подписку
После устранения ошибки, приостановившей подписку, вы можете использовать метод reactivate
, чтобы снова разрешить подписке получать события. Метод проверяет, что все ошибки устранены, и изменяет поле state
подписки с SUSPENDED
на ACTIVE
.
Чтобы повторно активировать подписку на Google Workspace:
Скрипт приложений
В проекте Apps Script создайте новый файл скрипта с именем
reactivateSubscription
и добавьте следующий код:function reactivateSubscription() { // The name of the subscription to reactivate. const name = 'subscriptions/SUBSCRIPTION_ID'; // Call the Workspace Events API using the advanced service. const response = WorkspaceEvents.Subscriptions.reactivate({}, name); console.log(response); }
Заменить следующее:
Чтобы повторно активировать подписку Google Workspace, запустите функцию
reactivateSubscription
в проекте Apps Script.
Питон
В рабочем каталоге создайте файл с именем
reactivate_subscription.py
и добавьте следующий код:"""Reactivate subscription.""" from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Specify required scopes. SCOPES = [SCOPES] # Authenticate with Google Workspace and get user authentication. flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES) CREDENTIALS = flow.run_local_server() # Call the Workspace Events API using the service endpoint. service = build( 'workspaceevents', 'v1', credentials=CREDENTIALS, ) NAME = 'subscriptions/SUBSCRIPTION_ID' response = service.subscriptions().reactivate(name=NAME).execute() print(response)
Заменить следующее:
-
SCOPES
: Одна или несколько областей действия OAuth , поддерживающих каждый тип событий для подписки. Форматируется как массив строк. Чтобы перечислить несколько областей действия, разделите их запятыми. Например,'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'
. -
SUBSCRIPTION_ID
: Идентификатор подписки. Чтобы получить идентификатор, воспользуйтесь любым из следующих способов:
-
Убедитесь, что вы сохранили учётные данные OAuth-клиента в рабочем каталоге и назвали файл
credentials.json
. В примере кода этот JSON-файл используется для аутентификации в Google Workspace и получения учётных данных пользователя. Инструкции см. в разделе Создание учётных данных OAuth-клиента .Чтобы повторно активировать подписку на Google Workspace, выполните в терминале следующую команду:
python3 reactivate_subscription.py
Subscription
.Если запрос не выполнен, ознакомьтесь со следующим разделом для устранения дополнительных ошибок.
Повторно активировать подписку как приложение Google Chat
Вы можете повторно активировать подписку на события Chat как пользователь приложения Chat, а не как пользователь. Процесс аналогичен, за исключением:
Вместо аутентификации пользователя выполните аутентификацию как приложение чата с однократным одобрением администратора .
Укажите области авторизации, позволяющие приложению Chat подписываться на события Chat. Эти области авторизации всегда начинаются с
chat.app
и включают в себя следующее:-
https://www.googleapis.com/auth/chat.app.memberships
: Подпишитесь на события для участников чат-пространства. -
https://www.googleapis.com/auth/chat.app.messages.readonly
: Подпишитесь на сообщения и реакции в чат-пространстве. -
https://www.googleapis.com/auth/chat.app.spaces
: Подпишитесь на события чат-пространства.
-
Создать ключ API
Для вызова метода API Developer Preview необходимо использовать закрытую версию документа API Discovery, доступную для разработчиков. Для аутентификации запроса необходимо передать ключ API.
Чтобы создать ключ API, откройте проект Google Cloud вашего приложения и выполните следующие действия:
- В консоли Google Cloud перейдите в > API и службы > Учетные данные .
- Нажмите Создать учетные данные > Ключ API .
- Отобразится ваш новый ключ API.
- Нажмите «Копировать , чтобы скопировать ключ API для использования в коде вашего приложения. Ключ API также можно найти в разделе «Ключи API» учётных данных вашего проекта.
- Чтобы предотвратить несанкционированное использование, мы рекомендуем ограничить, где и для каких API можно использовать ключ API. Подробнее см. в разделе «Добавление ограничений API» .
Напишите скрипт, который вызывает API событий Google Workspace
Следующий пример кода повторно активирует подписку на Google Workspace приложения Chat:
Питон
"""Reactivate subscription."""
from google.oauth2 import service_account
from apiclient.discovery import build
# Specify required scopes.
SCOPES = [SCOPES]
# Specify service account details.
CREDENTIALS = (
service_account.Credentials.from_service_account_file('credentials.json')
.with_scopes(SCOPES)
)
# Call the Workspace Events API using the service endpoint.
service = build(
'workspaceevents',
'v1beta',
credentials=CREDENTIALS,
discoveryServiceUrl='https://workspaceevents.googleapis.com/$discovery/rest?version=v1beta&labels=DEVELOPER_PREVIEW&key=API_KEY',
)
NAME = 'subscriptions/SUBSCRIPTION_ID'
response = service.subscriptions().reactivate(name=NAME).execute()
print(response)
Заменить следующее:
SCOPES
: Укажите области авторизации, позволяющие приложению Chat подписываться на события Chat. Эти области авторизации всегда начинаются сchat.app
и включают следующее:-
https://www.googleapis.com/auth/chat.app.memberships
: Подпишитесь на события для участников чат-пространства. -
https://www.googleapis.com/auth/chat.app.messages.readonly
: Подпишитесь на сообщения и реакции в чат-пространстве. -
https://www.googleapis.com/auth/chat.app.spaces
: Подпишитесь на события чат-пространства.
-
API_KEY
: ключ API, созданный вами для построения конечной точки службы для API событий Google Workspace.SUBSCRIPTION_ID
: Идентификатор подписки. Чтобы получить идентификатор, воспользуйтесь любым из следующих способов:
Устранение множественных ошибок
Если вы устранили ошибку, приостановившую подписку, и метод reactivate
не работает, возможно, после приостановки подписки произошла другая ошибка.
Чтобы выявить дополнительные ошибки, проверьте выходные данные невыполненного запроса. В выходных данных указаны все оставшиеся ошибки.
Если в вашей подписке обнаружено несколько ошибок, значение поля suspensionReason
всегда использует исходную ошибку, которая приостановила вашу подписку.