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 gli eventuali errori relativi all'abbonamento, puoi riattivarlo per ricominciare a ricevere eventi.

Puoi trovare informazioni su un abbonamento sospeso nei seguenti modi:

  • La tua app riceve un evento di ciclo di vita relativo alla sospensione. Se l'abbonamento viene sospeso a causa di un errore con il relativo 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.
  • Riceverai una notifica relativa a un errore di recapito all'endpoint di notifica. Per informazioni sul monitoraggio degli errori di recapito agli argomenti Google Cloud Pub/Sub, consulta Gestire gli errori dei messaggi.

Gli abbonamenti riattivati mantengono la data di scadenza originale. Per estendere la scadenza di un abbonamento, consulta l'argomento Aggiornare o rinnovare un abbonamento.

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 progetto Apps Script. Ad esempio:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • Attiva il servizio avanzato Google Workspace Events.

Python

  • Python 3.6 o versioni successive
  • Lo strumento di gestione dei 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, controlla 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 per la sottoscrizione.

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

Errore Descrizione Metodi per la risoluzione

USER_SCOPE_REVOKED

L'utente che ha eseguito l'autorizzazione 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 viene 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 che ha eseguito l'autorizzazione 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 al tuo endpoint di notifica. Concedi l'accesso all'account di servizio per l'applicazione Google Workspace che pubblica gli eventi.

Per gli eventi di Google Chat, l'account di servizio è chat-api-push@system.gserviceaccount.com. Per gli eventi di Google Meet, l'account di servizio è meet-api-event-push@system.gserviceaccount.com.

Per gli argomenti Pub/Sub, concedi il ruolo di Publisher Pub/Sub (roles/pubsub.publisher) all'account di servizio.

ENDPOINT_NOT_FOUND

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

ENDPOINT_RESOURCE_EXHAUSTED

L'endpoint di notifica non è riuscito a ricevere eventi a causa di una quota insufficiente o del raggiungimento del limite di frequenza. Richiedi un aumento della quota.

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 controlla che tutti gli errori siano stati risolti e modifica il campo state dell'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 chiamato 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 una delle seguenti opzioni:
      • 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('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)
    

    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 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 una delle seguenti opzioni:
      • 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 archiviato le credenziali dell'ID client OAuth e di aver assegnato al file il nome client_secrets.json. L'esempio di codice utilizza questo file JSON per autenticarsi con Google Workspace e ottenere le credenziali utente. Per le istruzioni, consulta Creare le credenziali dell'ID client OAuth.

  3. Per riattivare l'abbonamento a Google Workspace, esegui quanto segue 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 riesce, consulta la sezione seguente per risolvere altri errori.

Risolvere i problemi relativi a più errori

Se hai risolto l'errore che causava la sospensione dell'abbonamento e il metodo reactivate() non va a buon fine, potrebbe essersi verificato un altro errore dopo la sospensione dell'abbonamento.

Per identificare ulteriori 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.