Risolvi gli errori e riattiva un abbonamento a Google Workspace

Questa pagina spiega come riattivare un abbonamento a Google Workspace sospeso risolvendo o risolvendo i problemi relativi agli errori e chiamando il metodo subscriptions.reactivate.

Gli abbonamenti a Google Workspace vengono sospesi ogni volta che un errore impedisce all'abbonamento di ricevere eventi. Ad esempio, un abbonamento viene sospeso quando non è possibile trovare la risorsa di destinazione o l'endpoint di notifica. Dopo aver risolto eventuali errori relativi all'abbonamento, puoi riattivarlo per tornare a ricevere eventi.

Puoi scoprire di più su un abbonamento sospeso nei seguenti modi:

  • La tua app riceve un evento del ciclo di vita relativo alla sospensione. Se il tuo abbonamento viene sospeso a causa di un errore con il suo endpoint, potresti non ricevere un evento del ciclo di vita.
  • Utilizza i metodi subscriptions.get o subscriptions.list per verificare se il campo state dell'abbonamento è impostato su SUSPENDED.
  • Ricevi una notifica di mancato recapito all'endpoint di notifica. Per scoprire di più sul monitoraggio degli errori di recapito agli argomenti Google Cloud Pub/Sub, vedi Gestire gli errori dei messaggi.

Gli abbonamenti riattivati mantengono la data di scadenza originale. Per estendere la data di scadenza di un abbonamento, vedi Aggiornare o rinnovare un abbonamento a Google Workspace.

Apps Script

  • Un progetto Apps Script:
    • Utilizza il tuo progetto Google Cloud anziché quello predefinito creato automaticamente da Apps Script.
    • Per tutti gli ambiti che hai aggiunto per configurare la schermata per il consenso OAuth, devi aggiungere anche gli ambiti al file appsscript.json nel tuo progetto Apps Script. Ad esempio, se hai specificato l'ambito chat.messages, aggiungi quanto segue:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages"
      ]
          
    • Attiva il servizio avanzato Google Workspace Events.

Python

  • Python 3.6 o versioni successive
  • Lo strumento di gestione pacchetti pip
  • Le librerie client Google più recenti per Python. Per installarli o aggiornarli, esegui il seguente comando nell'interfaccia a riga di comando:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

Identificare e risolvere gli errori

Per identificare l'errore relativo a un abbonamento, esamina il campo suspensionReason dell'abbonamento. Puoi trovare questo campo quando ricevi un evento del ciclo di vita relativo alla sospensione o utilizzando il metodo subscriptions.get per esaminare tutti i campi dell'abbonamento.

La seguente tabella mostra i possibili errori per un abbonamento e, se possibile, come risolverli. Se non riesci a risolvere l'errore, puoi eliminare l'abbonamento o attendere la sua scadenza. L'API Google Workspace Events elimina automaticamente gli abbonamenti scaduti.

Errore Descrizione Modi per risolvere il problema

USER_SCOPE_REVOKED

L'utente autorizzante ha revocato la concessione di uno o più ambiti OAuth necessari per l'abbonamento. Ottieni un altro token di accesso. Per maggiori dettagli, vedi Ottenere un token di accesso dal server di autorizzazione Google.

RESOURCE_DELETED

La risorsa di destinazione per l'abbonamento è stata eliminata. Se la risorsa viene ripristinata, chiama il metodo reactivate. In caso contrario, non è richiesta alcuna azione, in quanto non puoi riattivare un abbonamento senza la risorsa di destinazione originale.

USER_AUTHORIZATION_FAILURE

L'utente autorizzatore non ha più accesso alla risorsa per l'abbonamento. Non occorre alcun intervento. Non puoi riattivare l'abbonamento perché l'utente che lo ha autorizzato non può accedere alla risorsa di destinazione.

ENDPOINT_PERMISSION_DENIED

L'applicazione Google Workspace non ha accesso per inviare eventi all'endpoint di notifica. Concedi l'accesso al service account per l'applicazione Google Workspace che fornisce gli eventi.

Service account:
  • Eventi di Google Chat: chat-api-push@system.gserviceaccount.com
  • Eventi di Google Drive: drive-api-event-push@system.gserviceaccount.com
  • Eventi Google Meet: meet-api-event-push@system.gserviceaccount.com

Per gli argomenti Pub/Sub, concedi il ruolo di Publisher Pub/Sub (roles/pubsub.publisher) ) al service account.

ENDPOINT_NOT_FOUND

L'endpoint di notifica non esiste o non è stato trovato. Controlla che l'endpoint sia ancora attivo e funzionante. Per risolvere i problemi relativi agli argomenti Pub/Sub, consulta la documentazione per la risoluzione dei problemi.

ENDPOINT_RESOURCE_EXHAUSTED

L'endpoint di notifica non ha ricevuto eventi a causa di una quota insufficiente o del raggiungimento della limitazione della frequenza. Richiedi un aumento della quota.

APP_SCOPE_REVOKED

L'amministratore del dominio ha revocato la concessione di uno o più ambiti OAuth per l'app Chat. Ricevere l'approvazione dell'amministratore.

APP_AUTHORIZATION_FAILURE

L'app di chat che ha autorizzato la creazione dell'abbonamento non ha più accesso alla risorsa di destinazione dell'abbonamento. Recuperare l'accesso alla risorsa di destinazione. Ad esempio, se la risorsa di destinazione è uno spazio di Chat, l'app Chat potrebbe richiedere l'iscrizione allo spazio.

Riattivare un abbonamento

Dopo aver risolto l'errore che ha sospeso l'abbonamento, puoi utilizzare il metodo reactivate per consentire all'abbonamento di ricevere di nuovo gli eventi. Il metodo verifica che tutti gli errori siano stati risolti e modifica il campo state del tuo abbonamento da SUSPENDED a ACTIVE.

Per riattivare un abbonamento a Google Workspace:

Apps Script

  1. Nel tuo progetto Apps Script, crea un nuovo file di script denominato reactivateSubscription e aggiungi il seguente codice:

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

    Sostituisci quanto segue:

    • SUBSCRIPTION_ID: l'ID dell'abbonamento. Per ottenere l'ID, puoi utilizzare uno dei seguenti metodi:
      • Il valore del campo uid.
      • L'ID del nome della risorsa rappresentato nel campo name. Ad esempio, se il nome della risorsa è subscriptions/subscription-123, utilizza subscription-123.
  2. Per riattivare l'abbonamento a Google Workspace, esegui la funzione reactivateSubscription nel tuo progetto Apps Script.

Python

  1. Nella directory di lavoro, crea un file denominato reactivate_subscription.py e aggiungi il seguente codice:

    """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)
    

    Sostituisci quanto segue:

    • SCOPES: uno o più ambiti OAuth che supportano ogni tipo di evento per l'abbonamento. Formattato come array di stringhe. Per elencare più ambiti, separali con le virgole. Ad esempio: 'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'.
    • SUBSCRIPTION_ID: l'ID dell'abbonamento. Per ottenere l'ID, puoi utilizzare uno dei seguenti metodi:
      • Il valore del campo uid.
      • L'ID del nome della risorsa rappresentato nel campo name. Ad esempio, se il nome della risorsa è subscriptions/subscription-123, utilizza subscription-123.
  2. Nella directory di lavoro, assicurati di aver memorizzato le credenziali dell'ID client OAuth e di aver denominato il file credentials.json. L'esempio di codice utilizza questo file JSON per l'autenticazione con Google Workspace e per ottenere le credenziali utente. Per istruzioni, vedi Creare le credenziali dell'ID client OAuth.

  3. Per riattivare l'abbonamento a Google Workspace, esegui il seguente comando nel terminale:

    python3 reactivate_subscription.py
L'API Google Workspace Events restituisce un'operazione a lunga esecuzione che contiene l'istanza della risorsa Subscription.

Se la richiesta non va a buon fine, consulta la sezione seguente per risolvere ulteriori errori.

Riattivare un abbonamento come app Google Chat

Puoi riattivare un abbonamento agli eventi di Chat come app di chat anziché come utente. La procedura è simile, tranne che:

  1. Anziché l'autenticazione utente, autenticati come app Chat con l'approvazione una tantum dell'amministratore.

  2. Specifica gli ambiti di autorizzazione che consentono all'app Chat di iscriversi agli eventi di Chat. Questi ambiti di autorizzazione iniziano sempre con chat.app e includono quanto segue:

    • https://www.googleapis.com/auth/chat.app.memberships: Iscriviti agli eventi dei membri dello spazio di Chat.
    • https://www.googleapis.com/auth/chat.app.messages.readonly: Abbonati agli eventi di messaggi e reazioni dello spazio di chat.
    • https://www.googleapis.com/auth/chat.app.spaces: Iscriviti agli eventi dello spazio di Chat.

Crea una chiave API

Per chiamare un metodo API di anteprima per gli sviluppatori, devi utilizzare una versione di anteprima per gli sviluppatori non pubblica del documento di rilevamento API. Per autenticare la richiesta, devi trasmettere una chiave API.

Per creare la chiave API, apri il progetto Google Cloud della tua app e svolgi i seguenti passaggi:

  1. Nella console Google Cloud, vai a Menu > API e servizi > Credenziali.

    Vai a credenziali

  2. Fai clic su Crea credenziali > Chiave API.
  3. Viene visualizzata la nuova chiave API.
    • Fai clic su Copia per copiare la chiave API da utilizzare nel codice della tua app. La chiave API è disponibile anche nella sezione "Chiavi API" delle credenziali del progetto.
    • Per impedire l'uso non autorizzato, ti consigliamo di limitare dove e per quali API può essere utilizzata la chiave API. Per maggiori dettagli, vedi Aggiungere limitazioni API.

Scrivere uno script che chiama l'API Google Workspace Events

Il seguente codice campione riattiva l'abbonamento a Google Workspace di un'app di chat:

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,
      discoveryServiceUrl='https://workspaceevents.googleapis.com/$discovery/rest?version=v1beta&labels=DEVELOPER_PREVIEW&key=API_KEY',
  )

  NAME = 'subscriptions/SUBSCRIPTION_ID'
  response = service.subscriptions().reactivate(name=NAME).execute()
  print(response)

Sostituisci quanto segue:

  • SCOPES: specifica gli ambiti di autorizzazione che consentono all'app Chat di iscriversi agli eventi di Chat. Questi ambiti di autorizzazione iniziano sempre con chat.app e includono quanto segue:

    • https://www.googleapis.com/auth/chat.app.memberships: Iscriviti agli eventi dei membri dello spazio di Chat.
    • https://www.googleapis.com/auth/chat.app.messages.readonly: Abbonati agli eventi di messaggi e reazioni dello spazio di chat.
    • https://www.googleapis.com/auth/chat.app.spaces: Iscriviti agli eventi dello spazio di Chat.
  • API_KEY: la chiave API che hai creato per creare l'endpoint del servizio per l'API Google Workspace Events.

  • SUBSCRIPTION_ID: l'ID dell'abbonamento. Per ottenere l'ID, puoi utilizzare uno dei seguenti metodi:

    • Il valore del campo uid.
    • L'ID del nome della risorsa rappresentato nel campo name. Ad esempio, se il nome della risorsa è subscriptions/subscription-123, utilizza subscription-123.

Risolvere più errori

Se hai risolto l'errore che ha sospeso l'abbonamento e il metodo reactivate non funziona, potrebbe essersi verificato un altro errore dopo la sospensione dell'abbonamento.

Per identificare altri errori, esamina l'output della richiesta non riuscita. L'output contiene eventuali errori ancora presenti.

Quando l'abbonamento presenta più errori, il valore del campo suspensionReason utilizza sempre l'errore originale che ha sospeso l'abbonamento.