Naprawianie błędów i ponowne aktywowanie subskrypcji Google Workspace

Z tego artykułu dowiesz się, jak ponownie aktywować zawieszoną subskrypcję Google Workspace, rozwiązując problemy i wywołując metodę subscriptions.reactivate.

Subskrypcje Google Workspace są zawieszane, gdy błąd uniemożliwia im otrzymywanie zdarzeń. Na przykład subskrypcja jest zawieszana, gdy nie można znaleźć jej zasobu docelowego lub punktu końcowego powiadomień. Po rozwiązaniu problemów z subskrypcją możesz ją ponownie aktywować, aby znowu otrzymywać zdarzenia.

Więcej informacji o zawieszonej subskrypcji znajdziesz w tych miejscach:

  • Aplikacja otrzyma zdarzenie cyklu życia dotyczące zawieszenia. Jeśli subskrypcja zostanie zawieszona z powodu błędu w jej punkcie końcowym, możesz nie otrzymać zdarzenia cyklu życia.
  • Użyj metod subscriptions.get lub subscriptions.list, aby sprawdzić, czy pole state subskrypcji ma wartość SUSPENDED.
  • Otrzymasz powiadomienie o niepowodzeniu dostawy do punktu końcowego powiadomień. Więcej informacji o monitorowaniu nieudanych dostaw do tematów Google Cloud Pub/Sub znajdziesz w artykule Obsługa nieudanych dostaw wiadomości.

Ponownie aktywowane subskrypcje zachowują pierwotną datę wygaśnięcia. Aby przedłużyć czas wygaśnięcia abonamentu Google Workspace, zapoznaj się z artykułem Aktualizowanie lub odnawianie abonamentu Google Workspace.

Google Apps Script

  • Projekt Apps Script:
    • Użyj swojego projektu Google Cloud zamiast domyślnego projektu utworzonego automatycznie przez Apps Script.
    • Wszystkie zakresy dodane w celu skonfigurowania ekranu zgody OAuth musisz też dodać do pliku appsscript.json w projekcie Apps Script. Jeśli na przykład określisz zakres chat.messages, dodaj te informacje:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages"
      ]
          
    • Włącz Google Workspace Events usługę zaawansowaną.

Python

  • Python 3.6 lub nowszy
  • Narzędzie do zarządzania pakietami pip
  • Najnowsze biblioteki klienta Google dla Pythona. Aby je zainstalować lub zaktualizować, w interfejsie wiersza poleceń uruchom to polecenie:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

Identyfikowanie i rozwiązywanie błędów

Aby zidentyfikować błąd subskrypcji, sprawdź pole suspensionReason subskrypcji. To pole znajdziesz, gdy otrzymasz wydarzenie związane z cyklem życia subskrypcji dotyczące zawieszenia lub gdy użyjesz metody subscriptions.get, aby sprawdzić wszystkie pola subskrypcji.

W tabeli poniżej znajdziesz możliwe błędy dotyczące subskrypcji oraz, w miarę możliwości, sposoby ich rozwiązania. Jeśli nie możesz rozwiązać problemu, możesz usunąć subskrypcję lub poczekać, aż wygaśnie. Interfejs Google Workspace Events API automatycznie usuwa wygasłe subskrypcje.

Błąd Opis Sposoby rozwiązania problemu

USER_SCOPE_REVOKED

Użytkownik, który udzielił autoryzacji, cofnął przyznanie co najmniej jednego zakresu OAuth wymaganego w przypadku subskrypcji. Uzyskaj kolejny token dostępu. Więcej informacji znajdziesz w artykule Uzyskiwanie tokena dostępu z serwera autoryzacji Google.

RESOURCE_DELETED

Zasób docelowy subskrypcji zostanie usunięty. Jeśli zasób zostanie przywrócony, wywołaj metodę reactivate. W innym przypadku nie musisz nic robić, ponieważ nie możesz ponownie aktywować subskrypcji bez pierwotnego zasobu docelowego.

USER_AUTHORIZATION_FAILURE

Użytkownik, który udzielił autoryzacji, nie ma już dostępu do zasobu w ramach subskrypcji. Nie musisz nic robić. Nie możesz ponownie aktywować subskrypcji, ponieważ użytkownik, który ją autoryzował, nie ma dostępu do zasobu docelowego.

ENDPOINT_PERMISSION_DENIED

Aplikacja Google Workspace nie ma dostępu do punktu końcowego powiadomień, aby dostarczać do niego zdarzenia. Przyznaj dostęp do konta usługi aplikacji Google Workspace, która dostarcza zdarzenia.

Konta usługi:
  • Wydarzenia w Google Chat: chat-api-push@system.gserviceaccount.com
  • Zdarzenia na Dysku Google: drive-api-event-push@system.gserviceaccount.com
  • Wydarzenia w Google Meet: meet-api-event-push@system.gserviceaccount.com

W przypadku tematów Pub/Sub przypisz do konta usługi rolę publikującego w Pub/Sub (roles/pubsub.publisher) .

ENDPOINT_NOT_FOUND

Punkt końcowy powiadomień nie istnieje lub nie można go znaleźć. Sprawdź, czy punkt końcowy jest nadal aktywny i działa. Informacje o rozwiązywaniu problemów z tematami Pub/Sub znajdziesz w dokumentacji dotyczącej rozwiązywania problemów.

ENDPOINT_RESOURCE_EXHAUSTED

Punkt końcowy powiadomień nie otrzymał zdarzeń z powodu niewystarczającego limitu lub osiągnięcia limitu liczby żądań. Poproś o zwiększenie limitu.

APP_SCOPE_REVOKED

Administrator domeny cofnął przyznanie co najmniej jednego zakresu OAuth aplikacji Chat. Uzyskaj zatwierdzenie przez administratora.

APP_AUTHORIZATION_FAILURE

Aplikacja do obsługi czatu, która autoryzowała utworzenie subskrypcji, nie ma już dostępu do zasobu docelowego subskrypcji. odzyskać dostęp do zasobu docelowego; Jeśli na przykład zasób docelowy to pokój w Google Chat, aplikacja Google Chat może potrzebować członkostwa w tym pokoju.

Ponowne aktywowanie subskrypcji

Po rozwiązaniu problemu, który spowodował zawieszenie subskrypcji, użyj metody reactivate, aby ponownie umożliwić subskrypcji odbieranie zdarzeń. Ta metoda sprawdza, czy wszystkie błędy zostały rozwiązane, i zmienia wartość pola state w subskrypcji z SUSPENDED na ACTIVE.

Aby ponownie aktywować abonament Google Workspace:

Google Apps Script

  1. W projekcie Apps Script utwórz nowy plik skryptu o nazwie reactivateSubscription i dodaj ten kod:

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

    Zastąp następujące elementy:

    • SUBSCRIPTION_ID: Identyfikator subskrypcji. Aby uzyskać identyfikator, możesz użyć dowolnej z tych metod:
      • Wartość pola uid.
      • Identyfikator nazwy zasobu podany w polu name. Jeśli na przykład nazwa zasobu to subscriptions/subscription-123, użyj subscription-123.
  2. Aby ponownie aktywować abonament Google Workspace, uruchom funkcję reactivateSubscription w projekcie Apps Script.

Python

  1. W katalogu roboczym utwórz plik o nazwie reactivate_subscription.py i dodaj ten kod:

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

    Zastąp następujące elementy:

    • SCOPES: co najmniej 1 zakres OAuth, który obsługuje każdy typ zdarzenia w przypadku subskrypcji. Sformatowane jako tablica ciągów tekstowych. Aby podać kilka zakresów, oddziel je przecinkami. Na przykład: 'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'.
    • SUBSCRIPTION_ID: Identyfikator subskrypcji. Aby uzyskać identyfikator, możesz użyć dowolnej z tych metod:
      • Wartość pola uid.
      • Identyfikator nazwy zasobu podany w polu name. Jeśli na przykład nazwa zasobu to subscriptions/subscription-123, użyj subscription-123.
  2. W katalogu roboczym przechowuj dane uwierzytelniające identyfikatora klienta OAuth i nadaj plikowi nazwę credentials.json. Przykładowy kod używa tego pliku JSON do uwierzytelniania w Google Workspace i uzyskiwania danych logowania użytkownika. Instrukcje znajdziesz w artykule Tworzenie danych logowania identyfikatora klienta OAuth.

  3. Aby ponownie aktywować abonament Google Workspace, uruchom w terminalu to polecenie:

    python3 reactivate_subscription.py
Interfejs Google Workspace Events API zwraca długo trwającą operację, która zawiera instancję zasobu Subscription.

Jeśli żądanie się nie powiedzie, zapoznaj się z sekcją poniżej, aby rozwiązać dodatkowe problemy.

Ponowne aktywowanie subskrypcji jako aplikacja do obsługi czatu

Możesz ponownie aktywować subskrypcję wydarzeń w Google Chat jako aplikacja Google Chat, a nie jako użytkownik. Proces jest podobny, z tą różnicą, że:

  1. Zamiast uwierzytelniania użytkownika uwierzytelnij się jako aplikacja Chat za pomocą jednorazowej zgody administratora.

  2. Określ zakresy autoryzacji, które umożliwiają aplikacji Google Chat subskrybowanie zdarzeń w Google Chat. Zakresy autoryzacji zawsze zaczynają się od chat.app i obejmują:

    • https://www.googleapis.com/auth/chat.app.memberships: subskrybuj zdarzenia dotyczące użytkowników pokoju czatu.
    • https://www.googleapis.com/auth/chat.app.memberships.readonly: subskrybuj zdarzenia dotyczące użytkowników pokoju czatu.
    • https://www.googleapis.com/auth/chat.app.messages.readonly: subskrybuj zdarzenia związane z wiadomościami i reakcjami w pokoju na czacie.
    • https://www.googleapis.com/auth/chat.app.spaces: subskrybuj zdarzenia w pokoju czatu.
    • https://www.googleapis.com/auth/chat.app.spaces.readonly: subskrybuj zdarzenia w pokoju czatu.

Napisz skrypt, który wywołuje interfejs Google Workspace Events API

Poniższy przykładowy kod ponownie aktywuje abonament Google Workspace aplikacji do Google 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,
  )

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

Zastąp następujące elementy:

  • SCOPES: określ zakresy autoryzacji, które umożliwiają aplikacji do obsługi czatu subskrybowanie zdarzeń w Google Chat. Zakresy autoryzacji zawsze zaczynają się od chat.app i obejmują:

    • https://www.googleapis.com/auth/chat.app.memberships: subskrybuj zdarzenia dotyczące użytkowników pokoju czatu.
    • https://www.googleapis.com/auth/chat.app.memberships.readonly: subskrybuj zdarzenia dotyczące użytkowników pokoju czatu.
    • https://www.googleapis.com/auth/chat.app.messages.readonly: subskrybuj zdarzenia związane z wiadomościami i reakcjami w pokoju na czacie.
    • https://www.googleapis.com/auth/chat.app.spaces: subskrybuj zdarzenia w pokoju czatu.
    • https://www.googleapis.com/auth/chat.app.spaces.readonly: subskrybuj zdarzenia w pokoju czatu.
  • SUBSCRIPTION_ID: Identyfikator subskrypcji. Aby uzyskać identyfikator, możesz użyć dowolnego z tych narzędzi:

    • Wartość pola uid.
    • Identyfikator nazwy zasobu podany w polu name. Jeśli na przykład nazwa zasobu to subscriptions/subscription-123, użyj subscription-123.

Rozwiązywanie problemów z wieloma błędami

Jeśli błąd, który spowodował zawieszenie subskrypcji, został rozwiązany, a metoda reactivate nie działa, po zawieszeniu subskrypcji mógł wystąpić inny błąd.

Aby wykryć dodatkowe błędy, sprawdź dane wyjściowe nieudanego żądania. Dane wyjściowe zawierają wszystkie błędy, które nadal występują.

Jeśli subskrypcja zawiera kilka błędów, wartość pola suspensionReason zawsze odnosi się do pierwotnego błędu, który spowodował zawieszenie subskrypcji.