이 페이지에서는 오류를 해결하거나 문제 해결하고
subscriptions.reactivate
메서드를 호출하여 정지된 Google Workspace
구독을 다시 활성화하는 방법을 설명합니다.
오류로 인해 구독에서 이벤트를 수신하지 못하면 Google Workspace 구독이 정지됩니다. 예를 들어 대상 리소스 또는 알림 엔드포인트를 찾을 수 없는 경우 구독이 정지됩니다. 구독과 관련된 오류를 해결한 후 구독을 다시 활성화하여 이벤트를 다시 수신할 수 있습니다.
다음과 같은 방법으로 정지된 구독에 대해 알아보세요.
- 앱에서 정지에 관한 수명 주기 이벤트 를 수신합니다. 엔드포인트 오류로 인해 구독이 정지된 경우 수명 주기 이벤트를 수신하지 못할 수 있습니다.
subscriptions.get또는subscriptions.list메서드를 사용하여 구독의state필드가SUSPENDED로 설정되어 있는지 확인합니다.- 알림 엔드포인트로의 전송 실패에 관한 알림이 전송됩니다. Google Cloud Pub/Sub 주제로의 전송 실패를 모니터링하는 방법을 알아보려면 메시지 실패 처리를참고하세요.
다시 활성화된 구독은 원래 만료일을 유지합니다. 구독의 만료 시간을 연장하려면 Google Workspace 구독 업데이트 또는 갱신을 참고하세요.
Apps Script
- Google Workspace 구독. 카탈로그를 만들려면 정기 결제 만들기를 참고하세요.
- Apps Script 프로젝트:
- Apps Script에서 자동으로 생성하는 기본 프로젝트 대신 Google Cloud 프로젝트를 사용합니다.
- OAuth 동의 화면을 구성하기 위해 추가한 모든 범위에 대해 Apps Script 프로젝트의
appsscript.json파일에도 범위를 추가해야 합니다. 예를 들어chat.messages범위를 지정한 경우 다음을 추가합니다. - 사용 설정
Google Workspace Events고급 서비스.
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages" ]
구독의 각 이벤트 유형에 적절한 승인 범위와 인증이 필요합니다.
- 사용자 인증의 경우 구독의 이벤트 유형 중 하나 이상을 지원하는 범위가 하나 이상 필요합니다. 범위를 식별하려면 이벤트 유형별 범위를 참고하세요.
- Chat 앱으로 Chat 이벤트를 구독하려면 일회성 관리자 승인을 통한 앱 인증이 필요합니다.
Python
- Python 3.6 이상
- pip 패키지 관리 도구
- 최신 Google 클라이언트 라이브러리(Python용) 설치하거나 업데이트하려면 명령줄 인터페이스에서 다음
명령어를 실행합니다.
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Google Workspace 구독. 카탈로그를 만들려면 정기 결제 만들기를 참고하세요.
구독의 각 이벤트 유형에 적절한 승인 범위와 인증이 필요합니다.
- 사용자 인증의 경우 구독의 이벤트 유형 중 하나 이상을 지원하는 범위가 하나 이상 필요합니다. 범위를 식별하려면 이벤트 유형별 범위를 참고하세요.
- Chat 앱으로 Chat 이벤트를 구독하려면 일회성 관리자 승인을 통한 앱 인증이 필요합니다.
오류 식별 및 해결
구독의 오류를 식별하려면 구독의 suspensionReason 필드를 검토하세요. 정지에 관한 수명 주기
이벤트
를 수신할 때 또는 구독의 모든 필드를 검토하기 위해
subscriptions.get 메서드를 사용할 때 이 필드를 찾을 수 있습니다.
다음 표에는 구독에 발생할 수 있는 오류와 가능한 경우 오류를 해결하는 방법이 나와 있습니다. 오류를 해결할 수 없는 경우 구독을 삭제하거나 만료될 때까지 기다릴 수 있습니다. Google Workspace Events API는 만료된 구독을 자동으로 삭제합니다.
| 오류 | 설명 | 해결 방법 |
|---|---|---|
|
승인 사용자가 구독에 필요한 하나 이상의 OAuth 범위의 권한을 취소했습니다. | 다른 액세스 토큰을 가져옵니다. 자세한 내용은 Google 승인 서버에서 액세스 토큰 가져오기를 참고하세요. |
|
구독의 대상 리소스가 삭제되었습니다. | 리소스가 복원되면 reactivate
메서드를 호출합니다. 그렇지 않으면 원래 대상 리소스가 없으면 구독을 다시 활성화할 수 없으므로 아무 조치를 취하지 않아도 됩니다. |
|
승인 사용자가 더 이상 구독의 리소스에 액세스할 수 없습니다. | 아무 조치를 취하지 않아도 됩니다. 승인한 사용자가 대상 리소스에 액세스할 수 없으므로 구독을 다시 활성화할 수 없습니다. |
|
Google Workspace 애플리케이션에 알림 엔드포인트로 이벤트를 전송할 수 있는 액세스 권한이 없습니다. | 이벤트를 전송하는 Google Workspace 애플리케이션의 서비스 계정에 액세스 권한을 부여합니다. Service accounts:
Pub/Sub 주제의 경우 서비스 계정에 Pub/Sub 게시자 역할 ( roles/pubsub.publisher)
을 부여합니다. |
|
알림 엔드포인트가 없거나 찾을 수 없습니다. | 엔드포인트가 여전히 활성 상태이고 작동하는지 확인합니다. Pub/Sub 주제 문제를 해결하려면 문제 해결 문서를 참고하세요. |
|
할당량이 부족하거나 비율 제한에 도달하여 알림 엔드포인트에서 이벤트를 수신하지 못했습니다. | 할당량 상향 조정을 요청합니다. |
|
도메인 관리자가 Chat 앱의 하나 이상의 OAuth 범위에 대한 권한을 취소했습니다. | 관리자 승인을 받습니다. |
|
구독 생성을 승인한 Chat 앱이 더 이상 구독의 대상 리소스에 액세스할 수 없습니다. | 대상 리소스에 대한 액세스 권한을 다시 얻습니다. 예를 들어 대상 리소스가 Chat 스페이스인 경우 Chat 앱에 스페이스의 멤버십이 필요할 수 있습니다. |
구독 다시 활성화
구독을 정지시킨 오류를 해결한 후 reactivate 메서드를 사용하여 구독에서 이벤트를 다시 수신하도록 합니다. 이 메서드는 모든 오류가 해결되었는지 확인하고 구독의 state 필드를 SUSPENDED에서 ACTIVE로 변경합니다.
Google Workspace 구독을 다시 활성화하려면 다음 단계를 따르세요.
Apps Script
Apps Script 프로젝트에서
reactivateSubscription이라는 새 스크립트 파일을 만들고 다음 코드를 추가합니다.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); }다음을 바꿉니다.
Google Workspace 구독을 다시 활성화하려면 Apps Script 프로젝트에서 함수
reactivateSubscription을 실행합니다.
Python
작업 디렉터리에
reactivate_subscription.py라는 파일을 만들고 다음 코드를 추가합니다."""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)다음을 바꿉니다.
SCOPES: 구독의 각 이벤트 유형을 지원하는 하나 이상의 OAuth 범위 문자열 배열 형식으로 지정됩니다. 여러 범위를 나열하려면 쉼표로 구분합니다. 예를 들어'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'입니다.SUBSCRIPTION_ID: 구독의 ID ID를 가져오려면 다음 중 하나를 사용하면 됩니다.
작업 디렉터리에 OAuth 클라이언트 ID 사용자 인증 정보를 저장하고 파일 이름을
credentials.json지정했는지 확인합니다. 코드 샘플은 이 JSON 파일을 사용하여 Google Workspace로 인증하고 사용자 인증 정보를 가져옵니다. 자세한 내용은 OAuth 클라이언트 ID 사용자 인증 정보 만들기를 참고하세요.Google Workspace 구독을 다시 활성화하려면 터미널에서 다음을 실행합니다.
python3 reactivate_subscription.py
Subscription 리소스의 인스턴스가 포함됩니다.
요청이 실패하면 다음 섹션을 참고하여 추가 오류를 해결하세요.
Chat 앱으로 구독 다시 활성화
사용자 대신 Chat 앱으로 Chat 이벤트 구독을 다시 활성화할 수 있습니다. 프로세스는 다음과 비슷합니다. 단,
사용자 인증 대신 일회성 관리자 승인을 통해 Chat 앱으로 인증합니다.
Chat 앱에서 Chat 이벤트를 구독할 수 있는 승인 범위를 지정합니다. 이러한 승인 범위는 항상
chat.app으로 시작하며 다음을 포함합니다.https://www.googleapis.com/auth/chat.app.memberships: Chat 스페이스 멤버 이벤트 구독https://www.googleapis.com/auth/chat.app.memberships.readonly: Chat 스페이스 멤버 이벤트 구독https://www.googleapis.com/auth/chat.app.messages.readonly: Chat 스페이스 메시지 및 반응 이벤트 구독https://www.googleapis.com/auth/chat.app.spaces: Chat 스페이스 이벤트 구독https://www.googleapis.com/auth/chat.app.spaces.readonly: Chat 스페이스 이벤트 구독
Google Workspace Events API를 호출하는 스크립트 작성
다음 코드 샘플은 Chat 앱의 Google Workspace 구독을 다시 활성화합니다.
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)
다음을 바꿉니다.
SCOPES: Chat 앱에서 Chat 이벤트를 구독할 수 있는 승인 범위를 지정합니다. 이러한 승인 범위는 항상chat.app으로 시작하며 다음을 포함합니다.https://www.googleapis.com/auth/chat.app.memberships: Chat 스페이스 멤버 이벤트 구독https://www.googleapis.com/auth/chat.app.memberships.readonly: Chat 스페이스 멤버 이벤트 구독https://www.googleapis.com/auth/chat.app.messages.readonly: Chat 스페이스 메시지 및 반응 이벤트 구독https://www.googleapis.com/auth/chat.app.spaces: Chat 스페이스 이벤트 구독https://www.googleapis.com/auth/chat.app.spaces.readonly: Chat 스페이스 이벤트 구독
SUBSCRIPTION_ID: 구독의 ID ID를 가져오려면 다음 중 하나를 사용하면 됩니다.
여러 오류 해결
구독을 정지시킨 오류를 해결했는데 reactivate 메서드가 실패하면 구독이 정지된 후 다른 오류가 발생했을 수 있습니다.
추가 오류를 식별하려면 실패한 요청의 출력을 검토하세요. 출력에는 여전히 존재하는 오류가 포함됩니다.
구독에 여러 오류가 있는 경우 suspensionReason 필드의 값은 항상 구독을 정지시킨 원래 오류를 사용합니다.