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

Z tej strony dowiesz się, jak ponownie aktywować zawieszoną subskrypcję Google Workspace. Aby to zrobić, musisz rozwiązać problemy lub naprawić błędy i użyć metody subscriptions.reactivate().

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

Informacje o zawieszonej subskrypcji możesz uzyskać na te sposoby:

  • Aplikacja otrzyma zdarzenie cyklu życia dotyczące zawieszenia. Jeśli subskrypcja została zawieszona z powodu błędu w jej punkcie końcowym, możesz nie otrzymać zdarzenia cyklu życia.
  • Aby sprawdzić, czy pole state w subskrypcji ma wartość SUSPENDED, użyj metody subscriptions.get() lub subscriptions.list().
  • Otrzymasz powiadomienie o nieudanej próbie dostarczenia powiadomienia do punktu końcowego. Więcej informacji o monitorowaniu błędów dostawy do tematów Google Cloud Pub/Sub znajdziesz w artykule Zarządzanie błędami wiadomości.

W przypadku reaktywowanych subskrypcji zachowana jest pierwotna data ważności. Aby przedłużyć czas ważności subskrypcji, zapoznaj się z artykułem Aktualizowanie lub odnawianie subskrypcji.

Google Apps Script

  • projekt Apps Script:
    • Zamiast domyślnego projektu utworzonego automatycznie przez Apps Script użyj swojego projektu Google Cloud.
    • W przypadku zakresów, które dodano do skonfigurowania ekranu zgody OAuth, musisz też dodać te zakresy do pliku appsscript.json w projekcie Apps Script. Na przykład:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • Włącz usługę zaawansowaną Google Workspace Events.

Python

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

Wykrywanie i rozwiązywanie błędów

Aby zidentyfikować błąd subskrypcji, sprawdź pole suspensionReason. To pole znajdziesz, gdy otrzymasz zdarzenie cyklu życia dotyczące zawieszenia, lub gdy za pomocą metody subscriptions.get() przejrzysz wszystkie pola subskrypcji.

W tabeli poniżej znajdziesz możliwe błędy dotyczące subskrypcji oraz sposoby ich rozwiązywania (jeśli to możliwe). Jeśli nie możesz rozwiązać problemu, usuń subskrypcję lub poczekaj, aż wygaśnie. Interfejs Events API w Google Workspace automatycznie usuwa wygasłe subskrypcje.

Błąd Opis Sposoby rozwiązania problemu

USER_SCOPE_REVOKED

Użytkownik autoryzujący cofnął uprawnienia co najmniej jednego zakresu OAuth wymaganego do subskrypcji. Uzyskaj kolejny token dostępu. Szczegółowe informacje znajdziesz w artykule Uzyskiwanie tokena dostępu z serwera autoryzacji Google.

RESOURCE_DELETED

Zasób docelowy subskrypcji został usunięty. Jeśli zasób został przywrócony, wywołaj metodę reactivate(). W przeciwnym razie nie musisz nic robić, ponieważ nie możesz reaktywować subskrypcji bez pierwotnego zasobu docelowego.

USER_AUTHORIZATION_FAILURE

Użytkownik upoważniający nie ma już dostępu do zasobu 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 dostarczania zdarzeń do punktu końcowego powiadomień. Przyznaj dostęp do konta usługi aplikacji Google Workspace, która dostarcza zdarzenia.

W przypadku zdarzeń Google Chat konto usługi to chat-api-push@system.gserviceaccount.com. W przypadku wydarzeń w Google Meet konto usługi to meet-api-event-push@system.gserviceaccount.com.

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

ENDPOINT_NOT_FOUND

Punkt końcowy powiadomienia nie istnieje lub nie można go znaleźć. Sprawdź, czy punkt końcowy jest nadal aktywny i działa. Aby rozwiązać problemy z tematami usługi Pub/Sub, zapoznaj się z dokumentacją dotyczącą rozwiązywania problemów.

ENDPOINT_RESOURCE_EXHAUSTED

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

Wznawianie subskrypcji

Gdy rozwiążesz problem, który spowodował zawieszenie subskrypcji, możesz użyć metody reactivate(), aby subskrypcja mogła ponownie otrzymywać zdarzenia. Ta metoda sprawdza, czy wszystkie błędy zostały naprawione, i zmienia pole state w subskrypcji z wartości SUSPENDED na ACTIVE.

Aby ponownie aktywować subskrypcję 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ć jednej z tych opcji:
      • Wartość pola uid.
      • Identyfikator nazwy zasobu w polu name. Jeśli na przykład nazwa zasobu to subscriptions/subscription-123, użyj subscription-123.
  2. Aby ponownie aktywować subskrypcję 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('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)
    

    Zastąp następujące elementy:

    • SCOPES: co najmniej 1 zakres OAuth obsługujący każdy typ zdarzenia w subskrypcji. Sformatowany jako tablica ciągów znaków. Aby podać wiele zakresów, rozdziel 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ć jednej z tych opcji:
      • Wartość pola uid.
      • Identyfikator nazwy zasobu w polu name. Jeśli na przykład nazwa zasobu to subscriptions/subscription-123, użyj subscription-123.
  2. Sprawdź, czy w katalogu roboczym masz zapisane dane uwierzytelniające klienta OAuth i czy plik ma nazwę client_secrets.json. Plik ten służy do uwierzytelniania się w Google Workspace i uzyskiwania danych logowania użytkownika. Instrukcje znajdziesz w artykule Tworzenie danych logowania klienta OAuth.

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

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

Jeśli żądanie się nie powiedzie, przeczytaj następną sekcję, aby rozwiązać problem.

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

Jeśli błąd, który spowodował zawieszenie subskrypcji, został już rozwiązany, a metoda reactivate() nie działa, po zawieszeniu subskrypcji może wystąpić inny błąd.

Aby znaleźć dodatkowe błędy, sprawdź dane wyjściowe nieudanego żądania. Wyjście zawiera wszystkie błędy, które nadal występują.

Jeśli subskrypcja ma wiele błędów, wartość w polu suspensionReason zawsze odpowiada pierwotnemu błędowi, który spowodował zawieszenie subskrypcji.