Corrigir erros e reativar uma assinatura do Google Workspace

Esta página explica como reativar uma assinatura suspensa do Google Workspace resolvendo ou solucionando erros e chamando o método subscriptions.reactivate().

As assinaturas do Google Workspace são suspensas sempre que um erro impede que a assinatura receba eventos. Por exemplo, uma assinatura é suspensa quando o recurso de destino ou o endpoint de notificação não pode ser encontrado. Depois de resolver os erros da assinatura, você pode reativá-la para voltar a receber eventos.

Você pode saber mais sobre uma assinatura suspensa das seguintes maneiras:

  • O app recebe um evento de ciclo de vida sobre a suspensão. Se a assinatura for suspensa devido a um erro com o endpoint, talvez você não receba um evento de ciclo de vida.
  • Use os métodos subscriptions.get() ou subscriptions.list() para saber se o campo state da assinatura está definido como SUSPENDED.
  • Você recebe uma notificação sobre uma falha de entrega no endpoint de notificação. Para saber como monitorar falhas de entrega em tópicos do Google Cloud Pub/Sub, consulte Processar falhas de mensagens.

As assinaturas reativadas mantêm a data de validade original. Para estender o prazo de validade de uma assinatura, consulte Atualizar ou renovar uma assinatura.

Apps Script

  • Um projeto do Apps Script:
    • Use seu projeto do Google Cloud em vez do padrão criado automaticamente pelo Apps Script.
    • Para todos os escopos que você adicionou para configurar a tela de consentimento do OAuth, também é necessário adicionar os escopos ao arquivo appsscript.json no seu projeto do Apps Script. Exemplo:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • Ative o serviço avançado Google Workspace Events.

Python

  • Python 3.6 ou mais recente
  • A ferramenta de gerenciamento de pacotes pip
  • As bibliotecas de cliente mais recentes do Google para Python. Para instalar ou atualizar, execute o seguinte comando na interface de linha de comando:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

Identificar e resolver erros

Para identificar o erro de uma assinatura, analise o campo suspensionReason dela. Você pode encontrar esse campo quando receber um evento de ciclo de vida sobre a suspensão ou usando o método subscriptions.get() para analisar todos os campos da assinatura.

A tabela a seguir mostra possíveis erros de uma assinatura e, quando possível, como resolvê-los. Se você não conseguir resolver o erro, exclua a assinatura ou aguarde o vencimento dela. A API Google Workspace Events exclui assinaturas expiradas automaticamente.

Erro Descrição Formas de resolver

USER_SCOPE_REVOKED

O usuário autorizado revogou a concessão de um ou mais escopos do OAuth necessários para a assinatura. Receber outro token de acesso. Para mais detalhes, consulte Receber um token de acesso do servidor de autorização do Google.

RESOURCE_DELETED

O recurso de destino da assinatura é excluído. Se o recurso for restaurado, chame o método reactivate(). Caso contrário, nenhuma ação é necessária, já que não é possível reativar uma assinatura sem o recurso de destino original.

USER_AUTHORIZATION_FAILURE

O usuário autorizado não tem mais acesso ao recurso da assinatura. Nenhuma ação é necessária. Não é possível reativar a assinatura, porque o usuário que a autorizou não pode acessar o recurso de destino.

ENDPOINT_PERMISSION_DENIED

O aplicativo do Google Workspace não tem acesso para enviar eventos ao endpoint de notificação. Conceda acesso à conta de serviço do aplicativo do Google Workspace que envia eventos.

Para eventos do Google Chat, a conta de serviço é chat-api-push@system.gserviceaccount.com. Para eventos do Google Meet, a conta de serviço é meet-api-event-push@system.gserviceaccount.com.

Para tópicos do Pub/Sub, conceda o papel de Editor do Pub/Sub (roles/pubsub.publisher) ) à conta de serviço.

ENDPOINT_NOT_FOUND

O endpoint de notificação não existe ou não pode ser encontrado. Verifique se o endpoint ainda está ativo e funcionando. Para resolver problemas com tópicos do Pub/Sub, consulte a documentação de solução de problemas.

ENDPOINT_RESOURCE_EXHAUSTED

O endpoint de notificação não recebeu eventos devido a cota insuficiente ou limitação de taxa. Solicitar um aumento da cota.

Reativar uma assinatura

Depois de resolver o erro que suspendeu sua assinatura, use o método reactivate() para permitir que a assinatura receba eventos novamente. O método verifica se todos os erros foram resolvidos e muda o campo state da sua assinatura de SUSPENDED para ACTIVE.

Para reativar uma assinatura do Google Workspace:

Apps Script

  1. No projeto do Apps Script, crie um novo arquivo de script chamado reactivateSubscription e adicione o seguinte código:

    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);
    }
    

    Substitua:

    • SUBSCRIPTION_ID: o ID da assinatura. Para conseguir o ID, use uma das seguintes opções:
      • O valor do campo uid.
      • O ID do nome do recurso representado no campo name. Por exemplo, se o nome do recurso for subscriptions/subscription-123, use subscription-123.
  2. Para reativar a assinatura do Google Workspace, execute a função reactivateSubscription no seu projeto do Apps Script.

Python

  1. No diretório de trabalho, crie um arquivo chamado reactivate_subscription.py e adicione o seguinte código:

    """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('client_secrets.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)
    

    Substitua:

    • SCOPES: um ou mais escopos do OAuth compatíveis com cada tipo de evento da assinatura. Formatado como uma matriz de strings. Para listar vários escopos, separe-os por vírgulas. Por exemplo, 'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'.
    • SUBSCRIPTION_ID: o ID da assinatura. Para conseguir o ID, use uma das seguintes opções:
      • O valor do campo uid.
      • O ID do nome do recurso representado no campo name. Por exemplo, se o nome do recurso for subscriptions/subscription-123, use subscription-123.
  2. No diretório de trabalho, verifique se você armazenou as credenciais do ID do cliente OAuth e nomeou o arquivo como client_secrets.json. O exemplo de código usa esse arquivo JSON para autenticar com o Google Workspace e receber as credenciais do usuário. Para instruções, consulte Criar credenciais de ID do cliente do OAuth.

  3. Para reativar a assinatura do Google Workspace, execute o seguinte no terminal:

    python3 reactivate_subscription.py
A API Google Workspace Events retorna uma operação de longa duração que contém a instância do recurso Subscription.

Se a solicitação falhar, consulte a próxima seção para resolver outros erros.

Resolver vários erros

Se você resolveu o erro que suspendeu a assinatura e o método reactivate() falhou, outro erro pode ter ocorrido depois que a assinatura foi suspensa.

Para identificar outros erros, analise a saída da solicitação com falha. A saída contém todos os erros que ainda estão presentes.

Quando a assinatura tem vários erros, o valor do campo suspensionReason sempre usa o erro original que suspendeu a assinatura.