Google Workspace 구독 나열

이 페이지에서는 subscriptions.list() 메서드를 사용하여 Google Workspace 구독을 나열하는 방법을 설명합니다.

사용자 인증을 사용하여 이 메서드를 호출하면 메서드는 사용자가 승인한 정기 결제 목록을 반환합니다. 앱 인증을 사용하면 메서드는 앱의 정기 결제가 포함된 목록을 반환할 수 있습니다.

기본 요건

Apps Script

  • Apps Script 프로젝트:
    • Apps Script에서 자동으로 생성된 기본 프로젝트 대신 Google Cloud 프로젝트를 사용하세요.
    • OAuth 동의 화면을 구성하기 위해 추가한 범위의 경우 Apps Script 프로젝트의 appsscript.json 파일에도 범위를 추가해야 합니다. 예를 들면 다음과 같습니다.
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • Google Workspace Events 고급 서비스를 사용 설정합니다.

Python

  • Python 3.6 이상
  • pip 패키지 관리 도구
  • 최신 Python용 Google 클라이언트 라이브러리입니다. 설치하거나 업데이트하려면 명령줄 인터페이스에서 다음 명령어를 실행하세요.
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      
  • Google Workspace 구독 구독을 만들려면 정기 결제 만들기를 참조하세요.

  • 인증이 필요합니다.

    • 사용자 인증에는 구독의 이벤트 유형 중 하나 이상을 지원하는 범위가 필요합니다. 범위를 식별하려면 이벤트 유형별 범위를 참고하세요.
    • 앱 인증에는 chat.bot 범위가 필요합니다 (Google Chat 앱만 해당).

사용자가 승인한 구독 나열

구독을 나열하려면 하나 이상의 이벤트 유형으로 필터링해야 합니다. 하나 이상의 대상 리소스로 쿼리를 필터링할 수도 있습니다. 지원되는 쿼리 필터에 대해 알아보려면 list() 메서드 문서를 참조하세요.

다음 코드 샘플은 이벤트 유형 및 타겟 리소스별로 필터링된 Subscription 객체의 배열을 반환합니다. 사용자로 인증되면 메서드는 사용자가 앱에서 생성하도록 승인한 정기 결제 목록만 반환합니다.

지정된 이벤트 유형 및 타겟 리소스의 구독을 나열하려면 다음 안내를 따르세요.

Apps Script

  1. Apps Script 프로젝트에서 listSubscriptions라는 새 스크립트 파일을 만들고 다음 코드를 추가합니다.

    function listSubscriptions() {
      // Filter for event type (required).
      const eventType = 'EVENT_TYPE';
    
      // Filter for target resource (optional).
      const targetResource = 'TARGET_RESOURCE';
    
      const filter = `event_types:"${eventType}" AND target_resource="${targetResource}"`
    
      // Call the Workspace Events API using the advanced service.
      const response = WorkspaceEvents.Subscriptions.list({ filter });
      console.log(response);
    }
    

    다음을 바꿉니다.

    • EVENT_TYPE: CloudEvents 사양에 따라 형식이 지정된 이벤트 유형입니다. 예를 들어 Google Chat 스페이스 google.workspace.chat.message.v1.created의 새 멤버십에 대한 이벤트를 수신하는 구독을 필터링하려면
    • TARGET_RESOURCE: 전체 리소스 이름으로 형식이 지정된 대상 리소스입니다. 예를 들어 Google Chat 스페이스의 구독으로 필터링하려면 //chat.googleapis.com/spaces/SPACE_ID를 사용합니다. 여기서 spaces/SPACE_IDSpace 리소스의 name 필드를 나타냅니다.
  2. 구독을 나열하려면 Apps Script 프로젝트에서 listSubscriptions 함수를 실행합니다.

Python

  1. 작업 디렉터리에서 list_subscriptions.py라는 파일을 만들고 다음 코드를 추가합니다.

    """List subscriptions."""
    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['SCOPE']
    
    # 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,
    )
    
    # Filter for event type (required).
    EVENT_TYPE = 'EVENT_TYPE'
    
    # Filter for target resource (optional).
    TARGET_RESOURCE = 'TARGET_RESOURCE'
    
    FILTER = f'event_types:"{EVENT_TYPE}" AND target_resource="{TARGET_RESOURCE}"'
    response = service.subscriptions().list(filter=FILTER).execute()
    print(response)
    

    다음을 바꿉니다.

    • SCOPE: 구독에서 하나 이상의 이벤트 유형을 지원하는 OAuth 범위입니다. 예를 들어 정기 결제가 업데이트된 Chat 스페이스(https://www.googleapis.com/auth/chat.spaces.readonly) 이벤트를 수신하는 경우
    • EVENT_TYPE: CloudEvents 사양에 따라 형식이 지정된 이벤트 유형입니다. 예를 들어 Google Chat 스페이스 google.workspace.chat.message.v1.created의 새 멤버십에 대한 이벤트를 수신하는 구독을 필터링하려면
    • TARGET_RESOURCE: 전체 리소스 이름으로 형식이 지정된 대상 리소스입니다. 예를 들어 Google Chat 스페이스의 구독으로 필터링하려면 //chat.googleapis.com/spaces/SPACE_ID를 사용합니다. 여기서 spaces/SPACE_IDSpace 리소스의 name 필드를 나타냅니다.
  2. 작업 디렉터리에 OAuth 클라이언트 ID 사용자 인증 정보를 저장하고 파일 이름을 client_secrets.json로 지정했는지 확인합니다. 코드 샘플은 이 JSON 파일을 사용하여 Google Workspace에 인증하고 사용자 인증 정보를 가져옵니다. 자세한 내용은 OAuth 클라이언트 ID 사용자 인증 정보 만들기를 참조하세요.

  3. 구독을 나열하려면 터미널에서 다음을 실행합니다.

    python3 list_subscriptions.py
    

Google Workspace Events API는 쿼리의 필터와 일치하는 Subscription 객체의 페이지로 나눈 배열을 반환합니다.