Z tego artykułu dowiesz się, jak ponownie aktywować zawieszoną subskrypcję Google Workspace przez naprawienie lub rozwiązywanie problemów oraz wywołanie metody subscriptions.reactivate()
.
Subskrypcje Google Workspace są zawieszane, gdy błąd uniemożliwia im odbieranie zdarzeń. Na przykład subskrypcja jest zawieszona, gdy nie można znaleźć zasobu docelowego lub punktu końcowego powiadomienia. Po naprawieniu błędów związanych z subskrypcją możesz ją ponownie aktywować, aby znów 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
subskrypcji ma wartośćSUSPENDED
, użyj metodysubscriptions.get()
lubsubscriptions.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
- subskrypcję Google Workspace. Aby ją utworzyć, zapoznaj się z artykułem Tworzenie subskrypcji.
Wymaga uwierzytelniania użytkownika z co najmniej 1 zakresem obsługującym wszystkie typy zdarzeń w ramach subskrypcji.
- projekt Apps Script:
- Zamiast domyślnego projektu utworzonego automatycznie przez Apps Script użyj swojego projektu Google Cloud.
- W przypadku wszystkich zakresów dodanych w celu skonfigurowania ekranu zgody OAuth musisz też dodać zakresy do pliku
appsscript.json
w projekcie Apps Script. Na przykład: - Włącz
usługę zaawansowaną
Google Workspace Events
.
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages.readonly" ]
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 to polecenie w interfejsie wiersza poleceń:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Abonament Google Workspace. Informacje o tworzeniu subskrypcji znajdziesz w artykule Tworzenie subskrypcji.
Wymaga uwierzytelniania użytkownika za pomocą co najmniej 1 zakresu, który obsługuje wszystkie typy zdarzeń w ramach subskrypcji.
Identyfikowanie i usuwanie 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, w miarę możliwości, jak je naprawić. Jeśli nie możesz naprawić błędu, 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 |
---|---|---|
|
Użytkownik autoryzujący cofnął uprawnienia co najmniej jednego zakresu OAuth, który jest wymagany do korzystania z subskrypcji. | Uzyskaj kolejny token dostępu. Szczegółowe informacje znajdziesz w artykule Uzyskiwanie tokena dostępu z serwera autoryzacji Google. |
|
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 ponownie aktywować subskrypcji bez pierwotnego zasobu docelowego. |
|
Autoryzujący użytkownik 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. |
|
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)
). |
|
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. |
|
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
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:
Aby ponownie aktywować subskrypcję Google Workspace, uruchom funkcję
reactivateSubscription
w projekcie Apps Script.
Python
W katalogu roboczym utwórz plik o nazwie
reactivate_subscription.py
i dodaj do niego 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. Jest sformatowany jako tablica ciągów tekstowych. 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 metod:
W katalogu roboczym sprawdź, czy dane uwierzytelniające klienta OAuth są zapisane i czy plik ma nazwę
client_secrets.json
. Przykładowy kod korzysta z tego pliku JSON do uwierzytelniania w Google Workspace i pobierania danych logowania użytkowników. Instrukcje znajdziesz w artykule Tworzenie danych logowania klienta OAuth.Aby ponownie aktywować subskrypcję Google Workspace, uruchom w terminalu te polecenia:
python3 reactivate_subscription.py
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 zidentyfikować 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.