Устраните ошибки и повторно активируйте подписку на Google Workspace.

На этой странице объясняется, как повторно активировать приостановленную подписку Google Workspace, устранив ошибки и вызвав метод subscriptions.reactivate .

Подписки Google Workspace приостанавливаются, когда ошибка не позволяет подписке получать события. Например, подписка приостанавливается, когда ее целевой ресурс или конечная точка уведомления не могут быть найдены. После устранения всех ошибок с подпиской вы можете повторно активировать подписку, чтобы снова начать получать события.

Узнать о приостановленной подписке можно следующими способами:

  • Ваше приложение получает событие жизненного цикла о приостановке. Если ваша подписка приостановлена ​​из-за ошибки с ее конечной точкой, вы можете не получить событие жизненного цикла.
  • Используйте методы subscriptions.get или subscriptions.list , чтобы узнать, установлено ли в поле state подписки значение SUSPENDED .
  • Вы уведомлены о сбое доставки в вашу конечную точку уведомления. Чтобы узнать о мониторинге сбоев доставки в темы Google Cloud Pub/Sub, см . Обработка сбоев сообщений .

Повторно активированные подписки сохраняют исходную дату окончания срока действия. Чтобы продлить срок действия подписки, см. Обновление или продление подписки Google Workspace .

Скрипт приложений

  • Проект скрипта приложений:
    • Используйте свой проект Google Cloud вместо проекта по умолчанию, автоматически созданного Apps Script.
    • Для любых областей, которые вы добавили для настройки экрана согласия OAuth, вы также должны добавить области в файл appsscript.json в вашем проекте Apps Script. Например:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • Включите расширенную службу Google Workspace Events .

Питон

  • Python 3.6 или выше
  • Инструмент управления пакетами pip
  • Последние клиентские библиотеки Google для Python. Чтобы установить или обновить их, выполните следующую команду в интерфейсе командной строки:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

Выявление и устранение ошибок

Чтобы определить ошибку для подписки, просмотрите поле suspensionReason подписки. Вы можете найти это поле, когда получаете событие жизненного цикла о приостановке или используя метод subscriptions.get для просмотра всех полей для подписки.

В следующей таблице показаны возможные ошибки для подписки и, когда это возможно, способы устранения ошибок. Если вы не можете устранить ошибку, вы можете удалить подписку или дождаться ее истечения. API событий Google Workspace автоматически удаляет истекшие подписки.

Ошибка Описание Способы решения

USER_SCOPE_REVOKED

Авторизующий пользователь отменил предоставление одной или нескольких областей OAuth, необходимых для подписки. Получите другой токен доступа. Подробности см. в разделе Получение токена доступа с сервера авторизации Google .

RESOURCE_DELETED

Целевой ресурс для подписки удален. Если ресурс восстановлен, вызовите метод reactivate . В противном случае никаких действий не требуется, так как вы не можете повторно активировать подписку без ее исходного целевого ресурса.

USER_AUTHORIZATION_FAILURE

Авторизующий пользователь больше не имеет доступа к ресурсу для подписки. Никаких действий не требуется. Вы не можете повторно активировать подписку, так как пользователь, который ее авторизовал, не может получить доступ к целевому ресурсу.

ENDPOINT_PERMISSION_DENIED

Приложение Google Workspace не имеет доступа к доставке событий в конечную точку уведомлений. Предоставьте доступ к учетной записи службы для приложения Google Workspace, которое доставляет события.

Учетные записи услуг:
  • События Google Chat : chat-api-push@system.gserviceaccount.com
  • События Google Диска : drive-api-event-push@system.gserviceaccount.com
  • События Google Meet : meet-api-event-push@system.gserviceaccount.com

Для тем Pub/Sub предоставьте учетной записи службы роль издателя Pub/Sub ( roles/pubsub.publisher) .

ENDPOINT_NOT_FOUND

Конечная точка уведомления не существует или не может быть найдена. Проверьте, что конечная точка все еще активна и работает. Для устранения неполадок в темах Pub/Sub см. документацию по устранению неполадок .

ENDPOINT_RESOURCE_EXHAUSTED

Конечная точка уведомлений не смогла получить события из-за недостаточной квоты или достижения ограничения скорости. Запросить увеличение квоты.

Повторно активировать подписку

После устранения ошибки, которая приостановила вашу подписку, вы можете использовать метод reactivate , чтобы подписка снова получала события. Метод проверяет, что все ошибки устранены, и изменяет поле state вашей подписки с SUSPENDED на ACTIVE .

Чтобы повторно активировать подписку Google Workspace:

Скрипт приложений

  1. В проекте 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);
    }
    

    Заменить следующее:

    • SUBSCRIPTION_ID : Идентификатор подписки. Чтобы получить идентификатор, вы можете использовать любой из следующих способов:
      • Значение поля uid .
      • Идентификатор имени ресурса, представленного в поле name . Например, если имя ресурса — subscriptions/subscription-123 , используйте subscription-123 .
  2. Чтобы повторно активировать подписку Google Workspace, запустите функцию reactivateSubscription в проекте Apps Script.

Питон

  1. В рабочем каталоге создайте файл с именем 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 : Идентификатор подписки. Чтобы получить идентификатор, вы можете использовать любой из следующих способов:
      • Значение поля uid .
      • Идентификатор имени ресурса, представленного в поле name . Например, если имя ресурса — subscriptions/subscription-123 , используйте subscription-123 .
  2. В рабочем каталоге убедитесь, что вы сохранили учетные данные идентификатора клиента OAuth и назвали файл credentials.json . Пример кода использует этот файл JSON для аутентификации в Google Workspace и получения учетных данных пользователя. Инструкции см. в разделе Создание учетных данных идентификатора клиента OAuth .

  3. Чтобы повторно активировать подписку Google Workspace, выполните в терминале следующую команду:

    python3 reactivate_subscription.py
API событий Google Workspace возвращает длительную операцию , содержащую экземпляр ресурса Subscription .

Если запрос не выполнен, см. следующий раздел для устранения дополнительных ошибок.

Устранение множественных ошибок

Если вы устранили ошибку, приостановившую подписку, и метод reactivate не работает, возможно, после приостановки подписки возникла другая ошибка.

Чтобы определить дополнительные ошибки, просмотрите вывод невыполненного запроса. Вывод содержит все ошибки, которые все еще присутствуют.

Если в вашей подписке обнаружено несколько ошибок, значение поля suspensionReason всегда использует исходную ошибку, которая приостановила вашу подписку.