На этой странице объясняется, как повторно активировать приостановленную подписку Google Workspace, устранив ошибки и вызвав метод subscriptions.reactivate .
Подписки Google Workspace приостанавливаются, если ошибка препятствует получению событий. Например, подписка приостанавливается, если не удается найти целевой ресурс или конечную точку уведомлений. После устранения всех ошибок в подписке вы можете повторно активировать ее, чтобы снова начать получать события.
Узнать о приостановленной подписке можно следующими способами:
- Ваше приложение получает событие жизненного цикла, связанное с приостановкой подписки. Если ваша подписка приостановлена из-за ошибки в конечной точке, вы можете не получить событие жизненного цикла.
- Используйте методы
subscriptions.getилиsubscriptions.list, чтобы проверить, установлено ли полеstateподписки в значениеSUSPENDED. - Вы получили уведомление о сбое доставки сообщения в вашу точку уведомлений. Чтобы узнать больше о мониторинге сбоев доставки сообщений в темы Google Cloud Pub/Sub, см. раздел «Обработка сбоев сообщений» .
При повторном включении подписки сохраняется первоначальная дата истечения срока действия. Чтобы продлить срок действия подписки, см. раздел «Обновление или продление подписки Google Workspace» .
Apps Script
- Подписка на Google Workspace. Чтобы создать ее, см. раздел «Создание подписки» .
- Проект на Apps Script:
- Используйте свой проект Google Cloud вместо проекта, автоматически создаваемого Apps Script по умолчанию.
- Для всех областей действия (scopes), которые вы добавили для настройки экрана согласия OAuth, необходимо также добавить эти области в файл
appsscript.jsonв вашем проекте Apps Script. Например, если вы указали область действияchat.messages, добавьте следующее: - Включите расширенную службу «
Google Workspace Events.
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages" ]
Для каждого типа событий в подписке требуется аутентификация и соответствующая область авторизации :
- Для аутентификации пользователя требуется одна или несколько областей действия, поддерживающих хотя бы один из типов событий для подписки. Чтобы определить область действия, см. раздел «Области действия по типу события» .
- Для подписки на событие чата в качестве приложения чата требуется аутентификация приложения с одноразовым подтверждением администратора .
Python
- Python 3.6 или выше
- Инструмент управления пакетами pip
- Новейшие клиентские библиотеки Google для Python. Для их установки или обновления выполните следующую команду в командной строке:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Подписка на Google Workspace. Чтобы создать ее, см. раздел «Создание подписки» .
Для каждого типа событий в подписке требуется аутентификация и соответствующая область авторизации :
- Для аутентификации пользователя требуется одна или несколько областей действия, поддерживающих хотя бы один из типов событий для подписки. Чтобы определить область действия, см. раздел «Области действия по типу события» .
- Для подписки на событие чата в качестве приложения чата требуется аутентификация приложения с одноразовым подтверждением администратора .
Выявление и устранение ошибок
Чтобы определить причину ошибки в подписке, проверьте поле suspensionReason этой подписки. Вы можете найти это поле, получив событие жизненного цикла, связанное с приостановкой , или используя метод subscriptions.get для просмотра всех полей подписки.
В следующей таблице показаны возможные ошибки, связанные с подпиской, и, если это возможно, способы их устранения. Если вы не можете устранить ошибку, вы можете удалить подписку или дождаться истечения ее срока действия. API событий Google Workspace автоматически удаляет просроченные подписки.
| Ошибка | Описание | Способы решения |
|---|---|---|
| Пользователь, предоставивший авторизацию, отозвал разрешение на использование одной или нескольких областей действия OAuth, необходимых для подписки. | Получите еще один токен доступа. Подробнее см. раздел «Получение токена доступа от сервера авторизации Google» . |
| Целевой ресурс для подписки удален. | Если ресурс восстановлен, вызовите метод reactivate . В противном случае никаких действий не требуется, поскольку невозможно повторно активировать подписку без исходного целевого ресурса. |
| Пользователь, предоставивший авторизацию, больше не имеет доступа к ресурсу, указанному в подписке. | Никаких действий не требуется. Вы не можете повторно активировать подписку, поскольку пользователь, который её авторизовал, не имеет доступа к целевому ресурсу. |
| Приложение Google Workspace не имеет доступа к доставке событий на вашу точку уведомлений. | Предоставьте доступ к учетной записи службы для приложения Google Workspace, которое осуществляет доставку событий. Служебные аккаунты:
Для тем Pub/Sub предоставьте учетной записи службы роль издателя Pub/Sub ( roles/pubsub.publisher) . |
| Точка доступа для уведомлений не существует или не может быть найдена. | Убедитесь, что конечная точка по-прежнему активна и работает. Для устранения неполадок в темах Pub/Sub см. документацию по устранению неполадок . |
| Точка уведомлений не смогла получить события из-за недостаточной квоты или достижения лимита скорости. | Запросить увеличение квоты. |
| Администратор домена отозвал разрешение на использование одной или нескольких областей действия OAuth для приложения «Чат». | Получите одобрение администратора . |
| Приложение чата, авторизовавшее создание подписки, больше не имеет доступа к целевому ресурсу подписки. | Восстановите доступ к целевому ресурсу. Например, если целевой ресурс — это пространство чата, приложению чата может потребоваться членство в этом пространстве. |
Возобновить подписку
После устранения ошибки, приостановившей вашу подписку, используйте метод reactivate , чтобы возобновить получение событий подпиской. Метод проверяет, устранены ли все ошибки, и изменяет поле state вашей подписки с SUSPENDED на ACTIVE .
Чтобы повторно активировать подписку Google Workspace:
Apps Script
В проекте 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.
Python
В рабочей директории создайте файл с именем
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 .Если запрос не удался, обратитесь к следующему разделу для устранения дополнительных ошибок.
Возобновите подписку в качестве приложения для чата.
Вы можете повторно активировать подписку на события чата как приложение чата, а не как пользователь. Процесс аналогичен, за исключением следующего:
Вместо аутентификации пользователя используйте аутентификацию в качестве приложения чата с одноразовым подтверждением администратора .
Укажите области авторизации, которые позволяют приложению «Чат» подписываться на события чата. Эти области авторизации всегда начинаются с
chat.appи включают следующее:-
https://www.googleapis.com/auth/chat.app.memberships: Подпишитесь на мероприятия для участников чата. -
https://www.googleapis.com/auth/chat.app.memberships.readonly: Подпишитесь на мероприятия для участников чата. -
https://www.googleapis.com/auth/chat.app.messages.readonly: Подписка на сообщения и реакции в чате. -
https://www.googleapis.com/auth/chat.app.spaces: Подпишитесь на события в чате. -
https://www.googleapis.com/auth/chat.app.spaces.readonly: Подпишитесь на события в чате.
-
Напишите скрипт, который вызывает API событий Google Workspace.
Приведенный ниже пример кода повторно активирует подписку Google Workspace для приложения чата:
Python
"""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,
)
NAME = 'subscriptions/SUBSCRIPTION_ID'
response = service.subscriptions().reactivate(name=NAME).execute()
print(response)
Замените следующее:
SCOPES: Укажите области авторизации, которые позволяют приложению «Чат» подписываться на события чата. Эти области авторизации всегда начинаются сchat.appи включают следующее:-
https://www.googleapis.com/auth/chat.app.memberships: Подпишитесь на мероприятия для участников чата. -
https://www.googleapis.com/auth/chat.app.memberships.readonly: Подпишитесь на мероприятия для участников чата. -
https://www.googleapis.com/auth/chat.app.messages.readonly: Подписка на сообщения и реакции в чате. -
https://www.googleapis.com/auth/chat.app.spaces: Подпишитесь на события в чате. -
https://www.googleapis.com/auth/chat.app.spaces.readonly: Подпишитесь на события в чате.
-
SUBSCRIPTION_ID: Идентификатор подписки. Чтобы получить идентификатор, можно использовать любой из следующих способов:
Устранение множественных ошибок
Если вы устранили ошибку, приведшую к приостановке подписки, и метод reactivate не сработал, возможно, после приостановки подписки возникла другая ошибка.
Для выявления дополнительных ошибок просмотрите вывод неудачного запроса. В выводе будут указаны все ошибки, которые все еще присутствуют.
Если в вашей подписке возникает несколько ошибок, значение поля suspensionReason всегда будет использовать исходную ошибку, которая привела к приостановке вашей подписки.