На этой странице объясняется, как повторно активировать приостановленную подписку на 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" ]
Питон
- 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 см. документацию по устранению неполадок . |
| Конечная точка уведомлений не смогла получить события из-за недостаточной квоты или достижения ограничения по скорости. | Запрос на увеличение квоты. |
Повторно активировать подписку
После устранения ошибки, приостановившей подписку, вы можете использовать метод 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
.Если запрос не выполнен, ознакомьтесь со следующим разделом для устранения дополнительных ошибок.
Устранение множественных ошибок
Если вы устранили ошибку, приостановившую подписку, и метод reactivate
не работает, возможно, после приостановки подписки произошла другая ошибка.
Чтобы выявить дополнительные ошибки, проверьте выходные данные невыполненного запроса. В выходных данных указаны все оставшиеся ошибки.
Если в вашей подписке обнаружено несколько ошибок, значение поля suspensionReason
всегда использует исходную ошибку, которая приостановила вашу подписку.