Corrigir erros e reativar uma assinatura do Google Workspace

Nesta página, explicamos como reativar uma assinatura suspensa do Google Workspace resolvendo ou resolvendo 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 é encontrado. Depois de resolver erros com a assinatura, é possível reativá-la para começar a receber eventos novamente.

Saiba mais sobre uma assinatura suspensa das seguintes maneiras:

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

As assinaturas reativadas mantêm a data de validade original. Para prolongar 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 projeto padrão criado automaticamente pelo Apps Script.
    • Para todos os escopos adicionados para configurar a tela de permissão OAuth, é preciso adicioná-los 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 superior
  • 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, consulte o campo suspensionReason dela. Esse campo pode ser encontrado ao receber um evento de ciclo de vida sobre a suspensão ou usando o método subscriptions.get() para revisar todos os campos da assinatura.

A tabela a seguir exibe 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 até que ela expire. A API Google Workspace Events exclui automaticamente as assinaturas expiradas.

Erro Descrição Formas de resolver

USER_SCOPE_REVOKED

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

RESOURCE_DELETED

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

USER_AUTHORIZATION_FAILURE

O usuário que autoriza não tem mais acesso ao recurso da assinatura. Você não precisa fazer nada. 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 para o aplicativo 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 foi encontrado. Verifique se o endpoint ainda está ativo e funcionando. Para solucionar problemas de tópicos do Pub/Sub, consulte a documentação sobre solução de problemas.

ENDPOINT_RESOURCE_EXHAUSTED

O endpoint de notificação não recebeu eventos devido à cota insuficiente ou ao alcance da 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 assinatura de SUSPENDED para ACTIVE.

Para reativar uma assinatura do Google Workspace, faça o seguinte:

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 destas opções:
      • 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 para a 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 destas opções:
      • 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 se autenticar no Google Workspace e receber credenciais de usuário. Para instruções, consulte Criar credenciais de ID do cliente OAuth.

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

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

Se a solicitação falhar, consulte a seção a seguir para solucionar outros erros.

Resolver vários erros

Se você resolveu o erro que suspendia a assinatura e o método reactivate() falhou, outro erro pode ter ocorrido após a suspensão da assinatura.

Para identificar outros erros, analise a saída da solicitação com falha. A saída contém 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.