사용자 인증 및 승인 (개발자 프리뷰)

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이 가이드에서는 OAuth 2.0을 사용자의 Google 사용자 인증 정보로 사용하여 Chat API에 액세스하는 방법을 설명합니다. 먼저 OAuth 2.0 클라이언트 ID 사용자 인증 정보를 만드는 방법을 안내합니다. 그런 다음 사용자 인증 정보를 사용하여 Chat API에 인증하고 Chat 앱을 Chat 스페이스에 추가하는 스크립트를 작성하는 방법을 보여줍니다.

사용자 인증 정보를 사용한 인증 및 승인을 통해 채팅 앱에서 인증된 사용자 대신 사용자 데이터에 액세스하고 작업을 수행할 수 있습니다. 예를 들어 사용자 인증 정보를 인증하고 승인한 후 채팅 앱은 다음과 같은 작업을 할 수 있습니다.

앱이 사용자 인증 (예: 스페이스 만들기)으로 작업을 실행하면 Google Chat에서 작업을 승인한 사용자 대신 작업을 수행한 앱의 이름을 사용자에게 알려주는 저작자 표시 메시지를 표시할 수 있습니다.

Chat 앱이 사용자 데이터에 액세스하거나 사용자를 대신하여 작업을 실행하지 않는 경우 대신 앱으로 인증하는 것이 좋습니다.

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

기본 요건

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

Python

1단계: Google 클라이언트 라이브러리 설치하기

원하는 언어로 아직 Google 클라이언트 라이브러리를 설치하지 않았다면 명령줄 인터페이스에서 다음 명령어를 실행합니다.

Python

pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client

클라이언트 라이브러리에서 지원되는 모든 언어를 사용할 수 있습니다.

OAuth 2.0을 사용하여 승인하면 Google에서 프로젝트 요약, 정책, 요청된 승인 범위를 포함한 동의 화면을 사용자에게 표시합니다. 앱의 OAuth 동의 화면을 구성하면 Google에서 사용자와 앱 검토자에게 표시할 내용을 정의하고 나중에 게시할 수 있도록 앱을 등록합니다.

OAuth 2.0을 사용하는 모든 앱에는 동의 화면 구성이 필요하지만 Google Workspace 조직 외부 사용자가 사용하는 앱의 범위만 나열하면 됩니다.

  1. Google Cloud 콘솔에서 메뉴 > API 및 서비스 > OAuth 동의 화면으로 이동합니다.

    OAuth 동의 화면으로 이동

  2. 앱의 사용자 유형을 선택한 다음 만들기를 클릭합니다.

  3. 앱 등록 양식을 작성한 다음 저장하고 계속하기를 클릭합니다.

  4. Add or Remove Scopes(범위 추가 또는 삭제)를 클릭합니다. 앱에 필요한 승인 범위를 추가하고 확인한 다음 업데이트를 클릭하고 저장 후 계속을 클릭합니다.

  5. 앱 등록 요약을 검토합니다. 수정을 클릭하여 변경하거나 대시보드로 돌아가기를 클릭합니다.

3단계: Google Cloud 콘솔에서 OAuth 클라이언트 ID 사용자 인증 정보 만들기

최종 사용자로 인증하고 앱에서 사용자 데이터에 액세스하려면 하나 이상의 OAuth 2.0 클라이언트 ID를 만들어야 합니다. 클라이언트 ID는 Google OAuth 서버에서 단일 앱을 식별하는 데 사용됩니다. 앱이 Android, iOS, 웹과 같은 여러 플랫폼에서 실행되는 경우 플랫폼마다 별도의 클라이언트 ID를 만들어야 합니다.

OAuth 클라이언트 ID 사용자 인증 정보 만들기

OAuth 클라이언트 ID를 만드는 방법에 대한 구체적인 안내를 보려면 아래에서 애플리케이션 유형을 선택하세요.

웹 애플리케이션

  1. Google Cloud 콘솔에서 메뉴 > API 및 서비스 > 사용자 인증 정보로 이동합니다.

    사용자 인증 정보로 이동

  2. 사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 클릭합니다.
  3. 애플리케이션 유형 > 웹 애플리케이션을 클릭합니다.
  4. 이름 필드에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google Cloud Console에만 표시됩니다.
  5. 앱과 관련된 승인된 URI를 추가합니다.
    • 클라이언트 측 앱 (자바스크립트): 승인된 자바스크립트 원본에서 URI 추가를 클릭합니다. 그런 다음 브라우저 요청에 사용할 URI를 입력합니다. 애플리케이션에서 OAuth 2.0 서버로 API 요청을 보낼 수 있는 도메인을 식별합니다.
    • 서버 측 앱 (자바, Python 등): 승인된 리디렉션 URI에서 URI 추가를 클릭합니다. 그런 다음 OAuth 2.0 서버가 응답을 보낼 수 있는 엔드포인트 URI를 입력합니다.
  6. 만들기를 클릭합니다. OAuth 클라이언트 생성 화면이 열리고 새 클라이언트 ID와 클라이언트 보안 비밀번호가 표시됩니다.

    클라이언트 ID를 기록해 둡니다. 클라이언트 비밀번호는 웹 애플리케이션에 사용되지 않습니다.

  7. OK를 클릭합니다. 새로 생성된 사용자 인증 정보가 OAuth 2.0 클라이언트 ID 아래에 표시됩니다.
  8. 선택사항: 자바스크립트 빠른 시작의 기본 요건으로 사용자 인증 정보를 만드는 경우 API 키도 생성해야 합니다.

Android

  1. Google Cloud 콘솔에서 메뉴 > API 및 서비스 > 사용자 인증 정보로 이동합니다.

    사용자 인증 정보로 이동

  2. 사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 클릭합니다.
  3. 애플리케이션 유형 > Android를 클릭합니다.
  4. '이름' 입력란에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google Cloud Console에만 표시됩니다.
  5. '패키지 이름' 필드에 AndroidManifest.xml 파일의 패키지 이름을 입력합니다.
  6. 'SHA-1 인증서 지문' 입력란에 생성된 SHA-1 인증서 지문을 입력합니다.
  7. 만들기를 클릭합니다. OAuth 클라이언트 생성 화면이 열리고 새 클라이언트 ID가 표시됩니다.
  8. OK를 클릭합니다. 새로 생성된 사용자 인증 정보가 'OAuth 2.0 클라이언트 ID' 아래에 표시됩니다.

iOS

  1. Google Cloud 콘솔에서 메뉴 > API 및 서비스 > 사용자 인증 정보로 이동합니다.

    사용자 인증 정보로 이동

  2. 사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 클릭합니다.
  3. 애플리케이션 유형 > iOS를 클릭합니다.
  4. '이름' 입력란에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google Cloud Console에만 표시됩니다.
  5. '번들 ID' 필드에 앱의 Info.plist 파일에 표시된 대로 번들 식별자를 입력합니다.
  6. 선택사항: Apple App Store에 앱이 표시되는 경우 App Store ID를 입력합니다.
  7. 선택사항: '팀 ID' 입력란에 Apple에서 생성하여 팀에 할당한 고유한 10자 문자열을 입력합니다.
  8. 만들기를 클릭합니다. OAuth 클라이언트 생성 화면이 열리고 새 클라이언트 ID와 클라이언트 보안 비밀번호가 표시됩니다.
  9. OK를 클릭합니다. 새로 생성된 사용자 인증 정보가 'OAuth 2.0 클라이언트 ID' 아래에 표시됩니다.

Chrome 앱

  1. Google Cloud 콘솔에서 메뉴 > API 및 서비스 > 사용자 인증 정보로 이동합니다.

    사용자 인증 정보로 이동

  2. 사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 클릭합니다.
  3. 애플리케이션 유형 > Chrome 앱을 클릭합니다.
  4. '이름' 입력란에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google Cloud Console에만 표시됩니다.
  5. '애플리케이션 ID' 입력란에 앱의 고유 32자 ID 문자열을 입력합니다. 이 ID 값은 앱의 Chrome 웹 스토어 URL 및 Chrome 웹 스토어 개발자 대시보드에서 확인할 수 있습니다.
  6. 만들기를 클릭합니다. OAuth 클라이언트 생성 화면이 열리고 새 클라이언트 ID와 클라이언트 보안 비밀번호가 표시됩니다.
  7. OK를 클릭합니다. 새로 생성된 사용자 인증 정보가 'OAuth 2.0 클라이언트 ID' 아래에 표시됩니다.

데스크톱 앱

  1. Google Cloud 콘솔에서 메뉴 > API 및 서비스 > 사용자 인증 정보로 이동합니다.

    사용자 인증 정보로 이동

  2. 사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 클릭합니다.
  3. 애플리케이션 유형 > 데스크톱 앱을 클릭합니다.
  4. 이름 필드에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google Cloud Console에만 표시됩니다.
  5. 만들기를 클릭합니다. OAuth 클라이언트 생성 화면이 열리고 새 클라이언트 ID와 클라이언트 보안 비밀번호가 표시됩니다.
  6. OK를 클릭합니다. 새로 생성된 사용자 인증 정보가 OAuth 2.0 클라이언트 ID 아래에 표시됩니다.

TV 및 입력 제한 기기

  1. Google Cloud 콘솔에서 메뉴 > API 및 서비스 > 사용자 인증 정보로 이동합니다.

    사용자 인증 정보로 이동

  2. 사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 클릭합니다.
  3. 애플리케이션 유형 > TV 및 제한된 입력 기기를 클릭합니다.
  4. '이름' 입력란에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google Cloud Console에만 표시됩니다.
  5. 만들기를 클릭합니다. OAuth 클라이언트 생성 화면이 열리고 새 클라이언트 ID와 클라이언트 보안 비밀번호가 표시됩니다.
  6. OK를 클릭합니다. 새로 생성된 사용자 인증 정보가 'OAuth 2.0 클라이언트 ID' 아래에 표시됩니다.

Universal Windows Platform(UWP)

  1. Google Cloud 콘솔에서 메뉴 > API 및 서비스 > 사용자 인증 정보로 이동합니다.

    사용자 인증 정보로 이동

  2. 사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 클릭합니다.
  3. 애플리케이션 유형 > 범용 Windows 플랫폼 (UWP)을 클릭합니다.
  4. '이름' 입력란에 사용자 인증 정보의 이름을 입력합니다. 이 이름은 Google Cloud Console에만 표시됩니다.
  5. '스토어 ID' 입력란에 앱의 고유한 12자리 Microsoft 스토어 ID 값을 입력합니다. 이 ID는 앱의 Microsoft Store URL 및 파트너 센터에서 확인할 수 있습니다.
  6. 만들기를 클릭합니다. OAuth 클라이언트 생성 화면이 열리고 새 클라이언트 ID와 클라이언트 보안 비밀번호가 표시됩니다.
  7. OK를 클릭합니다. 새로 생성된 사용자 인증 정보가 'OAuth 2.0 클라이언트 ID' 아래에 표시됩니다.

클라이언트 보안 비밀 JSON 파일 다운로드

클라이언트 보안 비밀 파일은 사용자 인증 정보를 제공할 때 채팅 앱에서 참조할 수 있는 OAuth 클라이언트 ID 사용자 인증 정보의 JSON 표현입니다.

  1. Google Cloud 콘솔에서 메뉴 > API 및 서비스 > 사용자 인증 정보로 이동합니다.

    사용자 인증 정보로 이동

  2. OAuth 2.0 클라이언트 ID 아래에서 만든 클라이언트 ID를 클릭합니다.

  3. JSON 다운로드를 클릭합니다.

  4. 파일을 client_secrets.json로 저장합니다.

4단계: API 키 만들기

Chat API에 대한 사용자 인증이 개발자 프리뷰 상태이지만, 코드는 Chat API 검색 문서의 개발자 프리뷰 버전을 가리켜야 합니다. API의 개발자 프리뷰 버전에 대한 Google Cloud 프로젝트의 액세스를 인증하려면 프로젝트에서 API 키를 생성하여 API 호출의 일부로 전달합니다.

API 키를 만들려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 메뉴 > API 및 서비스 > 사용자 인증 정보로 이동합니다.

    사용자 인증 정보로 이동

  2. 사용자 인증 정보 만들기 > API 키를 클릭합니다.
  3. 새 API 키가 표시됩니다.
    • 복사를 클릭하여 앱 코드에서 사용할 API 키를 복사합니다. API 사용자 인증 정보는 '프로젝트 사용자 인증 정보의 'API 키' 섹션에서도 확인할 수 있습니다.
    • 키 제한을 클릭하여 고급 설정을 업데이트하고 API 키 사용을 제한합니다. 자세한 내용은 API 키 제한사항 적용을 참고하세요.

5단계: Chat API를 호출하는 스크립트 작성

다음 코드는 클라이언트 라이브러리를 사용하여 Chat API를 호출합니다. OAuth 클라이언트 ID 사용자 인증 정보를 사용하여 Chat API로 인증한 다음 Chat 앱을 스페이스에 추가합니다.

client_secrets.json이 포함된 동일한 디렉터리에 있는 chat_create_membership.py 파일에 다음 코드를 저장합니다.

Python

from __future__ import print_function

import os.path

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# Define your app's authorization scopes.
# When modifying these scopes, delete the file token.json, if it exists.
SCOPES = ["https://www.googleapis.com/auth/chat.memberships.app"]

def main():
    '''
    Authenticates with Chat API via user credentials,
    then adds the Chat app to a Chat space.
    '''

    # Start with no credentials.
    creds = None

    # Check for the file token.json. If it exists, use it for authentication.
    # The file token.json stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.json'):
        creds = Credentials.from_authorized_user_file('token.json', SCOPES)

    # If there are no valid credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'client_secrets.json', SCOPES)
            creds = flow.run_local_server(port=0)

        # Save the credentials for the next run in a file
        # named token.json.
        with open('token.json', 'w') as token:
            token.write(creds.to_json())

    # Build a service endpoint for Chat API.
    #
    # While user authentication is in developer preview, append the
    # following parameters that let the Python client see a
    # developer preview version of the client library:
    #
    # discoveryServiceUrl—Points to a developer preview version of the Chat
    # API discovery document.
    #
    # developerKey—An API key created inside the developer preview Google
    # Cloud Project. This API key is used to authenticate the Cloud Project's
    # access to a developer preview API.
    key = 'API_KEY'
    url = 'https://chat.googleapis.com/$discovery/rest?version=v1&labels=DEVELOPER_PREVIEW'
    service = build('chat', 'v1', discoveryServiceUrl=url, developerKey=key, credentials=creds)

    # Set the Chat app as the entity that gets added to the space.
    # 'app' is an alias for the Chat app running the script.
    #
    # To specify a user, set:
    #
    # member = {
    #   'member': {
    #     'name':'users/{user}',
    #     'type':'HUMAN'
    #   }
    # }
    member = {
      'member': {
        'name':'users/app',
        'type': 'BOT'
      }
    }

    # Use the service endpoint to call Chat API.
    result = service.spaces().members().create(

      # Replace SPACE with a space name.
      # Obtain the space name from the spaces resource of Chat API,
      # or from a space's URL.
      parent='spaces/SPACE',
        body=member).execute()

    # Prints details about the created membership.
    print(result)

if __name__ == '__main__':
    main()

5단계: 예제 스크립트 실행

예시를 실행하려면 명령줄에서 chat_create_membership.pyclient_secrets.json가 있는 디렉터리로 이동한 후 다음 명령어를 실행합니다.

Python

python3 chat_create_membership.py

웹브라우저가 열리고 Google 계정에 로그인하라는 메시지가 표시됩니다.

채팅 앱을 승인하려면 로그인하세요.

로그인하면 OAuth 동의 화면이 표시되고 앱에 권한을 부여하라는 메시지가 표시됩니다.

OAuth 동의 화면을 통해 Chat 앱에 권한 부여

권한을 부여하면 스크립트가 Chat API를 호출하고 Chat 앱에 Chat 앱을 추가하여 응답합니다. 콘솔에 API 호출 세부정보가 출력됩니다.

예시 문제 해결하기

'웹' 또는 '설치된' 애플리케이션에 대해 단일 속성이 있는 JSON 객체가 있어야 합니다.

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

Expected a JSON object with a single property for a "web" or "installed" application

이 오류 메시지는 Google Cloud Platform에서 다운로드한 client_secrets.json 파일이 "web" 또는 "installed" 속성으로 시작하지 않음을 의미합니다. 다운로드한 파일로 인증한 후 코드가 액세스 토큰을 token.json와 같은 새 파일에 저장하지 않으면 액세스 토큰이 client_secrets.json에 작성됩니다. 이로 인해 후속 승인 시도 시 이 오류가 발생할 수 있습니다.

이 오류를 해결하려면 Google Cloud 콘솔에서 클라이언트 보안 비밀 파일을 다시 다운로드하고 새 파일을 현재 파일의 위치에 저장합니다.

다음 단계

Chat API 참조 문서를 확인하여 Chat API로 할 수 있는 다른 작업을 알아보세요.