Z tego artykułu dowiesz się, jak ponownie aktywować zawieszoną subskrypcję Google Workspace przez naprawianie błędów i rozwiązywanie problemów oraz wywoływanie metody subscriptions.reactivate()
.
Subskrypcje Google Workspace są zawieszane za każdym razem, gdy błąd uniemożliwia rejestrowanie zdarzeń. Na przykład subskrypcja jest zawieszona, gdy nie można znaleźć jej docelowego zasobu lub punktu końcowego powiadomień. Po naprawieniu błędów dotyczących subskrypcji możesz ją ponownie aktywować, aby znów otrzymywać zdarzenia.
Informacje o zawieszonej subskrypcji możesz uzyskać w ten sposób:
- Aplikacja otrzymuje zdarzenie cyklu życia dotyczące zawieszenia. Jeśli subskrypcja została zawieszona z powodu błędu punktu końcowego, możesz nie otrzymać zdarzenia cyklu życia.
- Za pomocą metody
subscriptions.get()
lubsubscriptions.list()
możesz sprawdzić, czy polestate
subskrypcji ma wartośćSUSPENDED
. - Otrzymasz powiadomienie o niepowodzeniu dostarczenia do punktu końcowego powiadomień. Aby dowiedzieć się więcej o monitorowaniu niepowodzeń dostarczania do tematów Google Cloud Pub/Sub, przeczytaj artykuł Obsługa błędów przesyłania wiadomości.
Ponownie aktywowane subskrypcje zachowują pierwotną datę ważności. Aby przedłużyć okres ważności subskrypcji, przeczytaj artykuł Aktualizowanie i odnawianie subskrypcji.
Google Apps Script
- abonament Google Workspace. Aby je utworzyć, zapoznaj się z informacjami o tworzeniu subskrypcji.
Wymaga uwierzytelniania użytkownika z co najmniej jednym zakresem obsługującym wszystkie typy zdarzeń w ramach subskrypcji.
- Projekt Apps Script:
- Użyj swojego projektu Google Cloud zamiast domyślnego utworzonego automatycznie przez Apps Script.
- W przypadku wszystkich zakresów, które zostały dodane w celu skonfigurowania ekranu zgody OAuth, musisz też dodać 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 języka Python. 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. Aby je utworzyć, zapoznaj się z informacjami o tworzeniu subskrypcji.
Wymaga uwierzytelniania użytkownika z co najmniej jednym zakresem obsługującym wszystkie typy zdarzeń w ramach subskrypcji.
Wykrywanie i naprawianie błędów
Aby zidentyfikować błąd związany z subskrypcją, sprawdź jej pole suspensionReason
. Możesz znaleźć to pole, gdy otrzymasz zdarzenie cyklu życia dotyczącego zawieszenia lub sprawdzić wszystkie pola subskrypcji za pomocą metody subscriptions.get()
.
W tabeli poniżej znajdziesz możliwe błędy 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. Google Workspace Event API automatycznie usuwa wygasłe subskrypcje.
Błąd | Opis | Sposoby rozwiązania problemu |
---|---|---|
|
Autoryzowany użytkownik unieważnił przypisanie co najmniej 1 zakresu OAuth wymaganych do subskrypcji. | Uzyskaj inny token dostępu. Więcej informacji znajdziesz w artykule Uzyskiwanie tokena dostępu z serwera autoryzacji Google. |
|
Zasób docelowy subskrypcji został usunięty. | Jeśli zasób zostanie przywrócony, wywołaj metodę reactivate() . W przeciwnym razie nie musisz nic robić, ponieważ nie będzie można ponownie aktywować subskrypcji bez pierwotnego zasobu docelowego. |
|
Autoryzowany 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ń w 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 rolę Publikującego Pub/Sub ( roles/pubsub.publisher)
do konta usługi |
|
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 związane z publikacjami Pub/Sub, zapoznaj się z dokumentacją rozwiązywania problemów. |
|
Punkt końcowy powiadomień nie odebrał zdarzeń z powodu niewystarczającego limitu lub osiągnięcia ograniczenia liczby żądań. | Poproś o zwiększenie limitu. |
Ponowne aktywowanie subskrypcji
Po usunięciu błędu, który spowodował zawieszenie subskrypcji, możesz użyć metody reactivate()
, aby zezwolić subskrypcji na ponowne odbieranie zdarzeń. Sprawdza ona, czy wszystkie błędy zostały usunięte, i zmienia wartość pola state
subskrypcji z 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 do niego 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 protokołu OAuth, który obsługuje każdy typ zdarzenia w subskrypcji. Sformatowana jako tablica ciągów tekstowych. Aby podać kilka 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ć dowolnej z tych opcji:
Sprawdź, czy w katalogu roboczym są zapisane dane logowania identyfikatora klienta OAuth i nadaj mu nazwę
client_secrets.json
. Przykładowy kod używa tego pliku JSON do uwierzytelniania w Google Workspace i pobierania danych logowania użytkownika. Instrukcje znajdziesz w artykule Tworzenie danych logowania identyfikatora klienta OAuth.Aby ponownie aktywować abonament Google Workspace, uruchom w terminalu to polecenie:
python3 reactivate_subscription.py
Subscription
.
Jeśli żądanie się nie powiedzie, zapoznaj się z sekcją poniżej, aby dowiedzieć się, jak rozwiązać inne problemy.
Naprawianie wielu błędów
Jeśli błąd powodujący zawieszenie subskrypcji został już rozwiązany, a metoda reactivate()
nie powiedzie się, po zawieszeniu subskrypcji mógł wystąpić kolejny błąd.
Aby zidentyfikować dodatkowe błędy, przejrzyj dane wyjściowe niepomyślnego żądania. Dane wyjściowe zawierają wszelkie błędy, które nadal występują.
Jeśli subskrypcja zawiera wiele błędów, wartość w polu suspensionReason
zawsze będzie zawierać pierwotny błąd, który spowodował zawieszenie subskrypcji.