채팅 앱으로 인증

이 가이드에서는 채팅 앱을 대신하여 서비스 계정을 설정하고 사용하여 Google Chat REST API에 액세스하는 방법을 설명합니다. 먼저 서비스 계정을 만드는 방법을 안내합니다. 그런 다음 서비스 계정을 사용하여 Chat API로 인증하고 Chat 공간에 메시지를 게시하는 스크립트를 작성하는 방법을 보여줍니다.

채팅 앱은 Google Chat REST API를 비동기식으로 호출할 때 서비스 계정을 사용하여 인증할 수 있습니다.

  • spaces.messages.create를 사용하여 Google Chat에 다음 주소로 메시지를 보냅니다.
    • 장기 실행 백그라운드 작업 실행이 완료되면 사용자에게 알립니다.
    • 서버가 오프라인 상태임을 사용자에게 알립니다.
    • 고객 지원팀에 새로 접수되는 고객 케이스를 처리할 수 있습니다.
  • spaces.messages.update를 사용하여 이전에 보낸 메시지를 다음과 같이 업데이트합니다.
    • 진행 중인 작업의 상태를 변경합니다.
    • 할 일의 담당자 또는 마감일을 업데이트합니다.
  • spaces.members.list로 스페이스의 사용자를 나열하여 다음 작업을 실행합니다.
    • 스페이스에 있는 사용자 확인
    • 스페이스 멤버십에 팀의 모든 사용자가 포함되어 있는지 확인하세요.

서비스 계정으로 인증된 경우 Chat 스페이스에서 데이터를 가져오거나 작업을 실행하려면 Chat 앱에 스페이스의 멤버십이 있어야 합니다. 예를 들어 스페이스 참여자를 나열하거나 스페이스에서 메시지를 만들려면 Chat 앱이 자체적으로 스페이스 참여자여야 합니다.

Chat 앱이 사용자 데이터에 액세스하거나 사용자를 대신하여 조치를 취해야 하는 경우 사용자로 인증하세요.

Chat 앱에 인증이 필요한 경우 및 사용할 인증 유형에 대한 자세한 내용은 Chat API 인증 및 승인 개요에서 필수 인증 유형을 참조하세요.

기본 요건

이 가이드의 예를 실행하려면 다음 기본 요건이 필요합니다.

Python

1단계: Google Cloud Console에서 서비스 계정 만들기

Chat 앱에서 Google API에 액세스하는 데 사용할 서비스 계정을 만듭니다.

서비스 계정을 만듭니다.

서비스 계정을 만드는 방법은 다음과 같습니다.

  1. Google Cloud 콘솔에서 메뉴 > IAM 및 관리자 > 서비스 계정으로 이동합니다.

    서비스 계정으로 이동

  2. 서비스 계정 만들기를 클릭합니다.
  3. 서비스 계정 세부정보를 입력한 다음 만들고 계속하기를 클릭합니다.
  4. 선택사항: 서비스 계정에 역할을 할당하여 Google Cloud 프로젝트의 리소스에 대한 액세스 권한을 부여합니다. 자세한 내용은 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.
  5. 계속을 클릭합니다.
  6. 선택사항: 이 서비스 계정으로 작업을 관리하고 수행할 수 있는 사용자 또는 그룹을 입력합니다. 자세한 내용은 서비스 계정 명의 도용 관리를 참고하세요.
  7. 완료를 클릭합니다.

서비스 계정 페이지가 서비스 계정 페이지에 나타납니다. 그런 다음 서비스 계정의 비공개 키를 만듭니다.

비공개 키 만들기

서비스 계정의 비공개 키를 만들려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 메뉴 > IAM 및 관리자 > 서비스 계정으로 이동합니다.

    서비스 계정으로 이동

  2. 서비스 계정을 선택합니다.
  3. > 키 추가 > 새 키 만들기를 클릭합니다.
  4. JSON을 선택한 후 만들기를 클릭합니다.

    새 공개 키/비공개 키 쌍이 생성되고 머신에 새 파일로 다운로드됩니다. 이 파일이 이 키의 유일한 사본입니다. 키를 안전하게 저장하는 방법에 대한 자세한 내용은 서비스 계정 키 관리를 참조하세요.

  5. 닫기를 클릭합니다.

서비스 계정에 대한 자세한 내용은 Google Cloud IAM 문서의 서비스 계정을 참조하세요.

2단계: 서비스 계정을 사용하여 Chat REST API로 인증하는 스크립트 작성

다음 코드는 서비스 계정을 사용하여 Chat REST API로 인증한 후 Chat 공간에 메시지를 게시합니다.

Python

  1. 작업 디렉터리에서 이름이 chat_app_auth.py인 파일을 만듭니다.
  2. chat_app_auth.py에 다음 코드를 포함합니다.

    from httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
        'service_account.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # Create a Chat message.
    result = chat.spaces().messages().create(
    
        # The space to create the message in.
        #
        # Replace SPACE_NAME with a space name.
        # Obtain the space name from the spaces resource of Chat API,
        # or from a space's URL.
        parent='spaces/SPACE_NAME',
    
        # The message to create.
        body={'text': 'Hello, world!'}
    
    ).execute()
    
    print(result)
    
  3. 코드에서 SPACE_NAME를 Chat API의 spaces.list 메서드나 스페이스의 URL에서 가져올 수 있는 스페이스 이름으로 바꿉니다.

3단계: 전체 예 실행하기

작업 디렉터리에서 샘플을 빌드하고 실행합니다.

Python

python3 chat_app_auth.py

스크립트가 Chat REST API에 인증된 요청을 전송하며 Chat 스페이스에 메시지를 Chat 앱으로 게시하여 응답합니다.

예시 문제 해결하기

이 섹션에서는 이 샘플을 실행하려고 할 때 발생할 수 있는 일반적인 문제를 설명합니다.

이 앱을 사용할 권한이 없습니다.

chat_app_auth.py를 실행할 때 다음과 같은 오류가 발생할 수 있습니다.

<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}/messages?alt=json returned "You are not permitted to use this app". Details: "You are not permitted to use this app">

이 오류 메시지는 Chat 앱이 메시지를 게시하려는 Chat 스페이스에 Chat 메시지를 게시할 권한이 없음을 의미합니다.

오류를 해결하려면 chat_app_auth.py에 지정된 Chat 스페이스에 Chat 앱을 추가합니다.

다음 단계

Chat API 참조 문서에서 Chat API로 할 수 있는 작업을 알아보세요.