처음 100개 파일 표시 & Google Drive의 폴더

1. Google Workspace API 사용

이 Codelab에서는 Google Workspace (이전의 G Suite) HTTP 기반 RESTful API 사용 방법을 소개합니다. 간결성과 가용성을 위해 Python으로 예시를 진행하지만 원하는 개발 언어를 선택해도 됩니다. 개발자 콘솔을 사용하여 프로젝트를 만들고 관리하는 방법, 승인 사용자 인증 정보 획득, API 클라이언트 라이브러리 설치와 같은 소개 주제를 살펴봅니다. 형식적인 절차를 마쳤으므로 API를 사용하여 Google Drive에 있는 처음 100개의 파일과 폴더를 표시하는 앱을 작성합니다.

학습할 내용

  • Google/Cloud Developers Console을 사용하여 프로젝트 만들기
  • 앱에서 OAuth2 애플리케이션 사용자 인증 정보 획득 및 사용
  • Google API 클라이언트 라이브러리 사용에 대해 알아보기
  • Google 및 Google Workspace API를 사용하여 애플리케이션 작성
  • Google Drive API로 파일 및 폴더 정보 가져오기

필요한 항목

  • 인터넷 및 웹브라우저 액세스
  • Google 계정 (Google Workspace 계정의 경우 관리자 승인이 필요할 수 있음)
  • Linux 및 Mac OS X와 같은 POSIX 규격 시스템에 대한 이해
  • 코드 편집기 또는 셸 명령어를 사용하여 소스 파일을 만들 수 있습니다.
  • Python (2 또는 3) 기본 기술 또는 다른 지원되는 언어 사용 가능
  • Google Drive의 일부 파일 또는 폴더

2. 설문조사

이 Codelab 튜토리얼을 어떻게 사용할 예정인가요?

읽기만 할 계획입니다 읽은 다음 연습 활동을 완료할 계획입니다

Google Workspace 개발자 도구 및 API 사용 경험을 평가해 주세요.

초급 중급 고급

3. 개요

이 Codelab에서는 다음 내용을 알아봅니다.

  1. Python용 Google API 클라이언트 라이브러리 다운로드
  2. Google/Cloud Developers Console에서 새 프로젝트 만들기
  3. 앱에 필요한 사용자 인증 정보 획득
  4. 이 사용자 인증 정보를 사용하여 Google Drive API에 액세스합니다.

Python을 사용하지 않으려면 선호하는 개발 도구에서 Codelab을 구현하고(지원되는 언어의 클라이언트 라이브러리는 여기에서 확인) Python 예시를 실행 가능한 의사코드로 참조하면 됩니다.

4. Python 환경 확인

이 Codelab을 사용하려면 Python 언어를 사용해야 합니다. 하지만 Google API 클라이언트 라이브러리에서 지원되는 많은 언어들도 지원됩니다. 따라서 해당 개발 도구에서 이와 상응하는 것을 빌드하고 단순히 의사코드로서 Python을 사용해도 좋습니다. 특히 이 Codelab은 Python 2 및 3을 지원하지만, 가능한 한 빨리 3.x로 이동하는 것이 좋습니다.

Cloud ShellCloud 콘솔에서 직접 사용자에게 제공되는 편리한 기능이며, 로컬 개발 환경이 필요하지 않습니다. 따라서 클라우드에서 웹브라우저를 사용하여 이 가이드의 내용을 완전히 수행할 수 있습니다. Cloud Shell은 GCP 제품 및 API를 사용하여 개발 중이거나 개발을 지속하려는 경우 특히 유용합니다. 특히 이 Codelab에서는 Cloud Shell에 두 Python 버전이 모두 미리 설치되어 있습니다.

Cloud Shell에는 또한 IPython이 설치되어 있습니다. 이것은 특히 데이터 과학 또는 머신러닝 커뮤니티에서 권장되는 상위 수준의 대화형 Python 인터프리터입니다. 이 경우에는 IPython이 Google Research에서 호스팅되는 Jupyter 노트북인 Colab은 물론 Jupyter 노트북의 기본 인터프리터입니다.

IPython에서는 Python 3 인터프리터가 선호되지만 3.x를 사용할 수 없는 경우 Python 2로 대체됩니다. Cloud Shell에서 IPython에 액세스할 수 있지만, 로컬 개발 환경에 IPython을 설치할 수도 있습니다. ^D(Ctrl-d)로 종료하고 종료 제안을 수락합니다. ipython 시작의 예시 출력은 다음과 같습니다.

$ ipython
Python 3.7.3 (default, Mar 4 2020, 23:11:43)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.13.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

IPython을 선호하지 않을 경우에는 표준 Python 대화형 인터프리터(Cloud Shell 또는 로컬 개발 환경) 사용도 문제 없이 허용됩니다(^D로 종료).

$ python
Python 2.7.13 (default, Sep 26 2018, 18:42:22)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
$ python3
Python 3.7.3 (default, Mar 10 2020, 02:33:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

또한 이 Codelab에서는 pip 설치 도구(Python 패키지 관리자 및 종속성 리졸버)가 있다고 가정합니다. 이 도구는 2.7.9+ 또는 3.4+ 버전과 함께 제공됩니다. 이전 Python 버전이 있으면 가이드에서 설치 안내를 참조하세요. 권한에 따라 sudo 또는 수퍼유저 액세스 권한이 필요할 수 있지만, 일반적이지는 않습니다. 또한 특정 Python 버전의 경우 pip2 또는 pip3를 명시적으로 사용하여 pip를 실행할 수 있습니다.

이 Codelab의 남은 부분에서는 Python 3를 사용한다고 가정합니다. Python 2에서의 방법이 3.x와 크게 다른 경우에는 해당 안내가 제공됩니다.

*가상 환경 만들기 및 사용

이 섹션은 선택사항이며 이 Codelab에 가상 환경을 사용해야 하는 사용자에게만 필요합니다(위에 표시된 경고 사이드바 참조). 컴퓨터에 Python 3만 있으면 단순히 이 명령어를 실행하여 my_env라는 가상 환경을 만들 수 있습니다(필요에 따라 이름 변경 가능).

virtualenv my_env

하지만 컴퓨터에 Python 2 및 3가 모두 있으면 다음과 같이 -p flag를 사용하여 Python 3 가상 환경을 설치하는 것이 좋습니다.

virtualenv -p python3 my_env

다음과 같이 '활성화'를 수행하여 새로 만든 가상 환경에 들어갑니다.

source my_env/bin/activate

다음과 같이 셸 프롬프트 앞에 가상 환경 이름이 표시되는 것을 보고 가상 환경에 들어왔는지 확인할 수 있습니다.

(my_env) $ 

이제 모든 필요한 패키지를 pip install하고, 이 환경 내에서 코드를 실행할 수 있습니다. 환경이 뒤죽박죽되거나, Python 설치가 손상된 경우에도 나머지 시스템에 영향을 주지 않고 전체 환경을 없앨 수 있다는 장점도 있습니다.

5. Python용 Google API 클라이언트 라이브러리 설치

이 Codelab에서는 Python용 Google API 클라이언트 라이브러리를 사용해야 합니다. 이를 위해 간단한 설치 프로세스를 수행하거나 아무 것도 수행하지 않도록 선택할 수도 있습니다.

편의를 위해서는 앞에서 Cloud Shell을 사용하는 것이 좋다고 알려드렸습니다. 이 가이드 전체는 클라우드에서 웹브라우저로 완료할 수 있습니다. Cloud Shell을 사용하는 또 다른 이유는 많은 인기 있는 개발 도구 및 필요한 라이브러리가 이미 사전 설치되어 있기 때문입니다.

*클라이언트 라이브러리 설치

(선택사항) 클라이언트 라이브러리를 이미 설치한 로컬 환경 또는 Cloud Shell을 사용하는 경우 이 단계를 건너뛸 수 있습니다. 로컬로 개발을 수행 중이고 라이브러리를 설치하지 않았거나 확실하지 않은 경우에만 이를 수행하면 됩니다. 가장 쉬운 방법은 pip(또는 pip3)를 사용하여 설치를 수행하는 것입니다(필요한 경우 pip 자체 업데이트 포함).

pip install -U pip google-api-python-client oauth2client

설치 확인

이 명령은 종속된 모든 패키지는 물론 클라이언트 라이브러리를 설치합니다. Cloud Shell 또는 고유 환경을 사용하든 간에 필수 패키지를 가져와서 클라이언트 라이브러리가 설치되었는지 확인하고 가져오기 오류(또는 출력 오류)가 없는지 확인합니다.

python3 -c "import googleapiclient, httplib2, oauth2client"

대신 Python 2(Cloud Shell에서)를 사용하는 경우 지원이 종료되었다는 경고가 표시됩니다.

*******************************************************************************
Python 2 is deprecated. Upgrade to Python 3 as soon as possible.
See https://cloud.google.com/python/docs/python2-sunset

To suppress this warning, create an empty ~/.cloudshell/no-python-warning file.
The command will automatically proceed in seconds or on any key.
*******************************************************************************

가져오기 '테스트' 명령어를 성공적으로 실행할 수 있으면(오류/출력 없음), Google API 사용을 시작할 수 있습니다.

요약

이 Codelab은 소개 Codelab이므로 Google 및 Google Workspace API를 처음 사용하는 것으로 가정합니다. 프로젝트를 만들고 사용자 승인 'OAuth 클라이언트 ID'를 만든 경험이 있는 경우 그렇다면 기존 프로젝트를 만들거나 재사용하고, 기존 OAuth 클라이언트 ID를 만들거나 재사용하고, 다음 두 모듈을 건너뛰고 'Drive 파일 및 폴더 애플리케이션 표시'로 바로 이동하거나 '고급 개발자 콘솔 사용'으로 바로 이동하여 안내가 적은 단계로 검토하세요.

6. Cloud 콘솔에서 프로젝트 지정

Google API를 사용하는 애플리케이션에는 프로젝트가 필요합니다. 이러한 항목은 Google Cloud 개발자 콘솔('devconsole')에서 관리됩니다. 이 Codelab에서는 Google Drive API만 사용할 예정이므로 다음을 수행하는 매직 링크 (아래 1단계)가 있습니다.

  • 개발자 콘솔로 이동합니다.
  • 새 프로젝트를 만들거나 기존 프로젝트를 선택하는 과정을 안내합니다.
  • Drive API를 자동으로 사용 설정합니다.

시작해 볼까요?

  1. console.developers.google.com/start/api?id=drive로 이동하여 Google 계정에 로그인합니다.
  2. 아직 프로젝트가 없는 경우 Google API 서비스 약관에 동의하는 화면이 표시됩니다.

e3b2076ba58a7cd7.png 약관에 동의하면 '내 프로젝트'라는 새 프로젝트가 생성되고 Drive API가 자동으로 사용 설정됩니다. 3. 이전에 프로젝트를 만든 적이 있다면 (예: 이전 Codelab) 대신 다음 화면이 표시됩니다. 50b3b8ace6721f1f.png 프로젝트 만들기 풀다운을 클릭하여 기존 프로젝트를 선택하거나 새 프로젝트를 만듭니다. 69db3867445ad9e5.png 새 프로젝트 또는 기존 프로젝트를 선택하면 Drive API가 자동으로 사용 설정됩니다. 4. 365e7de1377493bb.png 5라는 확인 메시지가 표시되면 Drive API가 사용 설정된 것입니다. 사용자 인증 정보로 이동을 클릭하여 다음 단계로 이동합니다.

7. *API 요청 승인(사용자 승인)

사용자 계정 승인 사용자 인증 정보를 이미 만들었고 이 프로세스에 익숙한 경우에는 이 섹션을 건너뛸 수 있습니다. 다른 기술을 사용하는 서비스 계정 승인과는 다릅니다. 따라서 아래 단계를 계속하세요.

승인 소개(및 일부 인증)

API에 요청을 수행하기 위해서는 애플리케이션이 적절한 승인을 수행해야 합니다. 비슷한 단어인 인증은 로그인 사용자 인증 정보를 설명합니다. 사용자가 Google 계정에 로그인할 때는 로그인 및 비밀번호를 사용하여 자신을 인증해야 합니다. 인증 후에는 Cloud Storage에 있는 Blob 파일 또는 Google 드라이브에 있는 사용자의 개인 파일과 같은 데이터에 액세스할 수 있도록 사용자 또는 사용자의 코드승인됩니다.

Google API는 여러 유형의 승인을 지원하지만, Google Workspace API 사용자에게 가장 일반적인 것은 사용자 승인입니다. 이 Codelab의 예시 애플리케이션은 최종 사용자에게 속하는 데이터에 액세스합니다. 이러한 최종 사용자는 자신의 데이터에 액세스하기 위해 귀하의 앱에 대해 권한을 부여해야 합니다. 즉, 귀하의 코드가 사용자 계정 OAuth2 사용자 인증 정보를 획득해야 합니다.

사용자 승인을 위해 OAuth2 사용자 인증 정보를 가져오기 위해서는 API 관리자로 돌아가고 왼쪽 탐색에서 '사용자 인증 정보' 탭을 선택합니다.

Y33PZ_rJC1y7NH7Rrvq1kN_WxZ9CppDGJK8tTSaha298Jlm5pMqgnyweIO4oX34fcLy0_VI4gihYu5wpEM_LeJg1iDAFoidhUVyfqJX3QTzODQ_OGjHLXYBxPpUvihCJi9JGwvMREw

여기에 도착하면 3개의 개별 섹션에 모든 사용자 인증 정보가 표시됩니다.

ComE4qh76dwZbIehkDUm1QawHGia_qVe7w7rkmgbeo_wjWS--kqXCt4_zvm55iy_RXA8dKYKvBxIKazkcYQ8871SA_kNslbvum_n1Ju4k9qJJSMtDhPAnofcvIlqlKm1nu7PBQhmEg

첫 번째는 API 키에 대한 것이고, 두 번째는 OAuth 2.0 클라이언트 ID, 마지막은 OAuth2 서비스 계정을 위한 것입니다. 여기에서는 가운데 항목을 사용합니다.

사용자 인증 정보 만들기

사용자 인증 정보 페이지에서 위에 있는 + 사용자 인증 정보 만들기 버튼을 클릭하면 'OAuth 클라이언트 ID'를 선택할 수 있는 대화상자가 표시됩니다.

C7jTddfrczo3GewPGCxbxX13GawtFc6FGvAPFusPc_IW-tr5M6xgXd1OzOHOUTo86WDa9fXiCITogv9b3wAgOcYM7xS3AmVNaPdTxbAynIe_sia2_x3LEPsBrdbX8NjeI2WaHRioOA

다음 화면에서는 앱의 승인 '동의 화면'을 구성하고 애플리케이션 유형을 선택하는 두 가지 작업을 수행할 수 있습니다.

El9_aqPQ6Q9hOsOp3JUC5qnCm_A_BVI-oCEfPk_MsvybnWBmC5lT6CtXSoZ7EQoFzrcBEzo4zF9s8CbhXyo0e-eSY3pZ1zg0BRvT0YssMMhbzEG-gP_jiO8v9q9HYTjg-QW5jJ0RDA

동의 화면을 설정하지 않으면 Console에 경고가 표시되고, 지금 작업을 수행해야 합니다. (동의 화면이 이미 설정되었으면 이를 건너뛰고 다음 단계를 진행합니다.)

'동의 화면 구성'을 클릭하고 '외부' 앱 (Google Workspace[이전 명칭: 'G Suite'] 고객의 경우에는 '내부')을 선택합니다.

5w-9R6gPvUHFzODZxXy-0GEhL8ZGDGNea3QtMp1FFYDv5DJ_MIDD21NEh3CzI-GKNzy6bkhH7bohxOG8icQTegiWlavOQhQqhSy7K31Ma3YTI9aAP3P-LmTBanPslX1cnjKLVZBi8A

이 연습에서는 Codelab 샘플을 게시하지 않기 때문에 무엇을 선택하든 중요하지 않습니다. 대부분의 경우 '외부'를 선택하여 더 복잡한 화면으로 연결되지만, 실제로 맨 위에 있는 '애플리케이션 이름' 필드만 작성하면 됩니다.

8e9z_RQz8lumYbDIcBvm57_Gpptn9uhrVQHoRzJ01AJNOFmXloDO7Eg3hhzJZZIU2F5rR0MxTCw-oXVFCq683xUwD4O33pXeuFsOMtM8EZhyjDoYc8Kv4hEoaG0Ztq9ePx6De7YmfA

지금은 애플리케이션 이름만 필요하므로, 수행 중인 Codelab을 나타내는 사람을 선택한 후 저장을 클릭합니다.

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

이제 사용자 인증 정보 탭으로 돌아가서 OAuth2 클라이언트 ID를 만듭니다. 여기에는 만들 수 있는 여러 OAuth 클라이언트 ID가 표시됩니다.

f8reuhsxOUNLcVrEIyRVsmP_fX_ceIlLvEKql1YHwSPW9jk9Mm9fJ0UlfUoi8eRN3QQXar4xtpo071zj6LSczNN7TYY8zB96Dn6ICZuvCAtjIgJSKdMSlX-ZhMuSWFpxxv661aUemw

기타에 해당하는 명령줄 도구를 개발하는 중이므로, 이를 선택하고 만들기 버튼을 클릭합니다. 만들려는 앱을 나타내는 클라이언트 ID를 선택하거나 단순히 일반적으로 'Other client N'인 기본 이름을 선택합니다.

사용자 인증 정보 저장

  1. 새 사용자 인증 정보 대화상자가 나타나면 확인을 클릭하여 닫습니다.

rAwekj_GNEuVwGbZOYYlGDQjlu4flE61OPEZIUmwMI5vGi3W365UwVCxi0mVNhg4WZSSczZywrZZ6NDM_U0FJ4b-TOIMEC189uybOJjgn8F_axesVMopel9RlehRBXdEFhN4d41WGQ

  1. 사용자 인증 정보 페이지로 돌아와서 'OAuth2 클라이언트 ID' 섹션으로 스크롤하고 새로 생성된 클라이언트 ID의 오른쪽 끝에 있는 다운로드 아이콘 aAmje6kT_xSUM4BKIlPREpjosx7C_xxwpWqBgiGVfVWxQ8nnQOfxTPhuU0QwSnmbjykZffGrqyP1nnKrEQ7D7OqYaGw_Uzscs9gX2RwwP4AmvtHIiTFLa0gkprzJSjG9pQSx7HtmSQ을 찾아서 클릭합니다. x-vb-sKZy-X8a1X4uTsBWotSd4wn0PGt4mHMNv6DUrq5J5ihpujUyTiIVr5SHw0p2ZDy0KTP-zqOaFX-Az9BYDWG90KNFmsRLTUOo1mUVk7dYRJiK3VwYJNU0bbxjsbbpqcTr5_oLw
  2. 그러면 client_secret-LONG-HASH-STRING.apps.googleusercontent.com.json과 같은 이름의 파일을 다운로드 폴더에 저장하는 대화상자가 열립니다. client_secret.json(샘플 앱에 사용되는 이름)과 같이 쉬운 이름으로 줄이고, 이 Codelab에서 샘플 앱을 만드는 디렉터리/폴더에 저장하는 것이 좋습니다.

요약

이제 사용자 인증 정보를 사용하여 앱에서 Drive API에 액세스할 수 있습니다. OAuth 클라이언트 ID의 목적은 사용자가 Google Drive의 데이터에 액세스할 수 있는 권한을 에 부여해야 한다는 점을 염두에 두세요.

NOTE: 위의 '마법사'를 사용하지 않고 수동으로 프로젝트를 만들고, API를 사용 설정하고, 사용자 인증 정보를 획득하는 방법에 관한 자세한 내용은 이 Codelab이 끝난 후 추가로 학습할 수 있습니다.

8. Drive 파일 및 폴더 애플리케이션 표시

로컬 개발 환경이든 Cloud Shell이든 client_id.json 사용자 인증 정보 파일이 있는 동일한 디렉터리에서 drive_list.py이라는 새 Python 파일을 만들고 아래 코드 줄을 추가합니다.

from __future__ import print_function

from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools

SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
    creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))

files = DRIVE.files().list().execute().get('files', [])
for f in files:
    print(f['name'], f['mimeType'])

애플리케이션 구조

이 애플리케이션에는 세 가지 기본 섹션이 있습니다.

  1. 라이브러리 기능을 가져오는 Python 가져오기
  2. 애플리케이션 사용자 인증 정보 가져오기
  3. 사용자의 Google Drive에서 파일 및 폴더 이름과 MIME 유형을 가져와 표시

NOTE: 이 Codelab이 끝난 후 코드를 자세히 살펴보고 줄별 설명을 검토하여 자세히 알아볼 수 있습니다.

애플리케이션 실행

이 파일 이름을 drive_list.py와 같이 지정합니다. 스크립트를 처음 실행할 때는 Drive(귀하의)에서 사용자 파일에 액세스하도록 승인을 받지 않은 상태입니다. 실행이 일시 중지되고 다음과 같이 출력이 표시됩니다.

$ python3 ./drive_list.py
/usr/local/lib/python3.6/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory
 warnings.warn(_MISSING_FILE_MESSAGE.format(filename))

Your browser has been opened to visit:
  https://accounts.google.com/o/oauth2/auth?client_id=LONG-STRING.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code

If your browser is on a different machine then exit and re-run this
application with the command-line parameter

 --noauth_local_webserver

로컬 개발 환경 사용

브라우저 창이 열리고 OAuth2 권한 대화상자가 표시되면 명령줄 스크립트가 일시 중지됩니다.

c2648f37bcb7a0c1.png

여기에서 애플리케이션은 코드에서 요청하는 권한을 사용자에게 요청합니다 (SCOPES 변수를 통해). 여기에서는 사용자의 Google Drive에서 파일 메타데이터를 볼 수 있는 기능입니다. 예, 코드에서 이러한 권한 범위는 URI로 표시되지만 OAuth2 흐름 대화상자 창의 지역에 따라 지정된 언어로 번역됩니다. 사용자는 요청된 권한에 대해 명시적인 승인을 제공해야 합니다. 그렇지 않으면 코드의 '흐름 실행' 부분에서 예외가 발생되어 스크립트가 더 이상 진행되지 않습니다.

NOTE: 일부 사용자는 브라우저를 여러 개 사용하며 승인 요청이 선호하지 않는 브라우저에 표시될 수 있습니다. 이 경우 사용하고 싶지 않은 브라우저 창에서 전체 URL을 복사하여 사용하고 싶은 브라우저의 주소 표시줄에 붙여넣으면 됩니다.

Cloud Shell 사용

주의를 기울이지 않고 Cloud Shell에서 프로그램을 실행하면 브라우저 창이 팝업되지 않아 멈춘 상태로 유지됩니다. 하단에 표시된 아래 진단 메시지가 귀하를 기다리고 있습니다.

If your browser is on a different machine then exit and re-run this
application with the command-line parameter

 --noauth_local_webserver

이 방법으로 실행하면 다음 출력이 대신 표시됩니다.

$ python3 drive_list.py --noauth_local_webserver
/usr/local/lib/python3.7/site-packages/oauth2client/_helpers.py:255: UserWarning: Cannot access storage.json: No such file or directory
 warnings.warn(_MISSING_FILE_MESSAGE.format(filename))

Go to the following link in your browser:

  https://accounts.google.com/o/oauth2/auth?client_id=xxx.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.readonly.metadata&access_type=offline&response_type=code

Enter verification code:

안내를 따르고 해당 URL을 사용하여 다른 브라우저 탭으로 이동하면 로컬 개발 환경에서 수행된 것에 대해 위에서 설명한 것과 거의 동일한 결과가 발생합니다. 주요 차이점은 마지막에 Cloud Shell에 입력할 확인 코드가 있는 화면이 하나 더 표시된다는 점입니다.

f6da2c335fb7c6a.png

이 코드를 잘라내어 터미널 창에 붙여넣습니다.

요약

사용자가 허용을 클릭하거나 인증 코드를 프롬프트에 붙여넣으면 앱이 계속 실행되므로 Drive 파일/폴더와 해당 MIME 유형으로 구성된 출력이 표시됩니다. 다음은 테스트 계정의 예입니다.

$ python3 ./drive_list.py
Travel expenses application/vnd.google-apps.spreadsheet
Gmail Add-ons codelab application/vnd.google-apps.script
Google Workspace Developer Intro application/vnd.google-apps.presentation
Baseball Sheets application/vnd.google-apps.folder
My Resume application/vnd.google-apps.document
  . . .

연속 실행 시 승인 요청 프롬프트가 더 이상 표시되지 않고 (인증 라이브러리에 의해 캐시되었기 때문) 바로 출력으로 이동합니다. 터미널에서 문서를 처음 보는 것은 흥미로운 일입니다. 그럴 것 같습니다.

9. 결론

이제 Drive API의 추가 기능을 알아보거나 다른 Google Workspace (Gmail, Google Docs, Sheets, Slides, Calendar) 및 기타 Google API (지도, 애널리틱스, YouTube 등)를 살펴볼 수 있습니다. 끝까지 완료하신 것을 축하드립니다.

이 Codelab에 나온 코드는 GitHub 저장소 github.com/googlecodelabs/gsuite-apis-intro에서도 확인할 수 있습니다. (이 Codelab은 저장소와 최대한 동기화된 상태를 유지합니다.) 다음으로 넘어가 볼까요? 아래에는 이 Codelab에서 다룬 내용을 자세히 살펴보거나, 생각을 확장하고 Google 기술에 프로그래매틱 방식으로 액세스하는 다른 방법을 알아볼 수 있는 다양한 리소스가 나와 있습니다.

앞서 언급한 것처럼 Python을 자주 사용하지 않는 개발자라면 원하는 개발 언어로 이 Codelab 예시를 다시 실행해 보세요. 지원되는 언어의 클라이언트 라이브러리는 여기에서 확인할 수 있습니다.

추가 연구

이제 Drive API를 어느 정도 사용해 보셨으므로 아래의 권장 연습을 통해 기술을 더욱 발전시켜 보세요.

  1. ZIP 파일: 여러 ZIP 보관 파일을 Drive에 백업하고 즉시 압축을 해제하여 각 ZIP 파일 이름이 해당 파일이 저장되는 폴더의 이름이 되도록 하는 애플리케이션을 작성합니다. 추가 점수: 다른 폴더 내에 삽입된 Drive 폴더를 사용하여 다른 ZIP 파일 내에서 재귀 ZIP 아카이브 지원 포기하는 경우 이 Node.js 샘플 앱을 참고하세요.
  2. 사진 앨범: 여러 이미지를 Google Drive에 업로드하고 타임스탬프와 지리적 위치별로 별도의 폴더에 정리하는 사진 앨범 생성 도구의 시작 부분을 작성합니다. 추가 과제: 오픈소스 이미지 조작 라이브러리를 찾아 각 폴더의 모든 사진을 이어 붙여 경험한 이벤트 (여행, 저녁 식사 등)를 나타냅니다.
  3. GCP 살펴보기: Google Workspace와 Google Cloud Platform (GCP)을 함께 연결하는 앱을 작성합니다. Google Drive에서 Google Cloud Storage (GCS), 즉 또 다른 '클라우드 파일 스토리지' 솔루션으로 이미지 파일을 백업하는 도구를 작성하세요. 고급 클라이언트 라이브러리 덕분에 GCS를 사용하는 것이 Drive보다 간단합니다.
  4. 분석 및 기록: Google Cloud Vision API에 이미지를 전달하고 API가 해당 이미지에서 확인한 상위 (3, 5, 10) '라벨'을 가져와 백업된 각 이미지를 분석하여 3번 솔루션을 확장합니다. 각 이미지에 대해 Cloud Vision의 분석과 GCS의 백업 위치가 포함된 행을 Google Sheets에 작성합니다. 포기한 경우 이 Python Codelab을 참고하세요.

10. 추가 리소스

문서

뉴스 및 업데이트

기타 Codelab

도입

중급

고급

참조 앱

11. *애플리케이션 자세한 설명

이 선택 섹션은 세션이 끝난 후 발생한 격차를 메우거나 추가 연구를 위해 자체 학습용으로 사용됩니다.

라이브러리 기능을 가져오는 Python 가져오기

from __future__ import print_function

from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
  • 첫 번째 import 문은 이 코드가 Python 2에서 실행되도록 지원합니다. Python 3만 사용하는 경우 완전히 삭제해도 됩니다.
  • Python 스타일 가이드라인 중 하나는 표준 라이브러리와 서드 파티 모듈 가져오기를 구분하는 것입니다. 빈 줄은 이를 위한 것입니다.
  • 다음 세 개의 가져오기는 Google API 클라이언트 라이브러리에서 필요한 클래스와 함수를 가져옵니다. 이 앱을 작성하는 데 모두 필요합니다. 간략하게 설명하면 다음과 같습니다.
  • googleapiclient는 Google API에 연결하는 데 중점을 둡니다.
  • httplib2은 앱에서 사용할 HTTP 클라이언트를 제공합니다.
  • oauth2client는 OAuth2 사용자 인증 정보를 관리하는 데 도움이 됩니다.

승인 및 애플리케이션 사용자 인증 정보 가져오기

SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
    creds = tools.run_flow(flow, store)
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
  • 애플리케이션 SCOPES은 앱이 실행하는 사용자에게 요청하는 권한입니다. 사용자 데이터를 안전하게 유지하기 위해 권한이 부여되지 않은 앱은 실행할 수 없습니다.
  • 앱이 작동하는 데 필요한 가장 제한적인 권한을 사용하는 것이 좋습니다. 왜냐하면
  • 앱을 설치하거나 실행할 때 앱에서 많은 권한을 요청하면 짜증이 나지 않나요? 기쁜 소식입니다. 이제 사용자의 모든 권한을 요청하는 입장이 되었습니다. 더 제한적인 범위를 사용하면 액세스 권한을 덜 요청하므로 사용자가 앱을 설치하는 데 더 안심할 수 있습니다.
  • 대부분의 범위는 긴 URL과 비슷하며 드라이브 메타데이터 범위도 예외는 아닙니다.
SCOPES = 'https://www.googleapis.com/auth/drive.readonly.metadata'
  • 앱이 Google 서버와 통신하려면 토큰이 필요합니다. Google에서 반환되는 유효한 토큰은 토큰 저장소 파일인 storage.json에 저장됩니다. 이러한 토큰을 저장하지 않으면 앱을 실행할 때마다 앱을 다시 승인해야 합니다.
store = file.Storage('storage.json')
  • 이 앱은 먼저 저장소에 유효한 사용자 인증 정보가 이미 있는지 확인합니다 (if 문 조건 참고).
creds = store.get()
if not creds or creds.invalid:
  • 사용자 인증 정보가 없거나 만료된 경우 다운로드한 client_id.json 파일의 OAuth 클라이언트 ID 및 보안 비밀을 사용하여 새 승인 흐름을 [oauth2client.client.flow_from_clientsecrets()을 통해] 빌드해야 합니다.
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
  • 앱에 흐름이 있으면 위에 설명되고 그림으로 표시된 대로 [oauth2client.tools.run_flow()를 통해] 사용자에게 OAuth2 권한 화면을 표시하기 위해 실행해야 합니다.
    creds = tools.run_flow(flow, store)
  • 허용을 클릭하면 사용자가 앱이 Google Drive 파일 메타데이터에 액세스하는 데 동의하고 Google 서버가 API에 액세스할 수 있는 토큰을 반환합니다. creds로 반환되고 storage.json 파일에 캐시됩니다.
  • 이제 앱에 API 호출을 수행할 수 있는 유효한 사용자 인증 정보가 있습니다. googleapiclient.discovery.build()를 호출하면 사용 중인 API에 대한 서비스 엔드포인트가 생성됩니다.
  • build()를 사용하려면 원하는 API 이름 ('drive')과 버전 (현재 'v3')을 전달하세요.
  • 마지막 매개변수는 암호화된 API 호출에 사용할 HTTP 클라이언트입니다.
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))

처음 100개의 Drive 파일/폴더 및 MIME 유형 가져오기 및 표시

files = DRIVE.files().list().execute().get('files', [])
for f in files:
    print(f['name'], f['mimeType'])
  • 다음 코드 줄은 Drive API의 files() 컬렉션에서 list() 메서드를 호출하여 요청을 빌드하며, 이 요청은 execute()로 즉시 호출됩니다. Python dict가 반환되며, 여기에서 'files' 키를 요청하여 사용자의 Google Drive에서 100개의 파일 및 폴더 이름을 가져옵니다 (파일이 100개 미만인 경우 그 이하).
  • 왜 100인가요? DRIVE.files().list()의 기본값입니다. 이 숫자를 10개 또는 1,000개로 변경하려면 요청에 pageSize 매개변수(DRIVE.files().list(pageSize=10))를 추가합니다. 자세한 옵션은 문서를 참고하세요.
  • 스크립트의 마지막 부분은 각 파일을 통해 루프를 실행하고 이름과 파일 MIME 유형을 표시합니다.

이제 Google REST API를 사용하는 첫 번째 애플리케이션을 작성했습니다. 축하합니다. 가져오기 및 승인 코드를 제외하면 이 스크립트는 실제로 몇 줄의 코드 (위에 표시된 코드)로 구성됩니다. 대부분의 Google API는 유사한 방식으로 작동하며 사용하려는 각 API에 대한 서비스 엔드포인트만 만들면 됩니다.

앱에서 두 개 이상의 Google API 사용

예, 동일한 앱에서 두 개 이상의 API를 사용할 수 있습니다. 다음은 동일한 HTTP 클라이언트를 재사용하고 3개의 Google API (3개의 서로 다른 SCOPES 포함)에 서비스 엔드포인트를 만드는 앱의 Python 코드 스니펫입니다.

SCOPES = (
    'https://www.googleapis.com/auth/drive',
    'https://www.googleapis.com/auth/spreadsheets.readonly',
    'https://www.googleapis.com/auth/presentations',
)

    . . .

HTTP   = creds.authorize(Http())
DRIVE  = discovery.build('drive',  'v3', http=HTTP)
SHEETS = discovery.build('sheets', 'v4', http=HTTP)
SLIDES = discovery.build('slides', 'v1', http=HTTP)

이 코드는 스프레드시트 데이터 (Sheets API)를 기반으로 여러 슬라이드 데크 (Slides API)를 생성하고 생성된 각 데크에 대해 복사된 슬라이드 템플릿 (Drive API)을 사용하는 앱의 일부가 될 수 있습니다. 이러한 앱은 존재하지 않지만 Google Workspace 팀에서 빌딩 블록으로 만든 두 가지 기존 샘플을 사용하여 유사한 앱을 빌드할 수 있습니다.

  • 슬라이드의 텍스트 및 이미지 바꾸기 ( 블로그 게시물 및 동영상) - Drive API를 사용하여 슬라이드 템플릿 덱을 복사한 다음 Slides API를 사용하여 텍스트 및 이미지 자리표시자를 변경합니다.
  • 스프레드시트 데이터에서 슬라이드 생성 ( 블로그 게시물 및 동영상): 스프레드시트 (Sheets API)에서 데이터를 읽고 해당 데이터를 기반으로 슬라이드 (Slides API)를 만듭니다.

과제: 앱을 빌드하세요.

12. *고급 개발자 콘솔 사용

이 선택사항 섹션에서는 Codelab의 위에서 설명한 마법사를 사용하지 않고 개발자 콘솔에서 프로젝트를 만들고, API를 사용 설정하고, 사용자 인증 정보를 획득하는 방법을 설명합니다. 이 옵션은 수동으로 이 작업을 수행하는 데 익숙하거나 방법을 배우고 싶은 중급 사용자를 위한 것입니다.

Cloud 콘솔에서 프로젝트 지정

Google API를 사용하여 애플리케이션을 작성할 때는 항상 프로젝트가 있어야 합니다. 기존 프로젝트를 재사용하거나 새 프로젝트를 만들 수 있습니다. 이 작업은 Cloud 콘솔에서 수행됩니다. 일부 Codelab에서는 필수 단계를 많이 건너뛰고 빠르게 시작할 수 있는 매직 링크 (예: 설정 마법사)를 제공합니다. 하지만 모든 사용자가 프로젝트를 만들 수 있는 것은 아니므로 프로젝트를 만드는 방법에 대한 일반적인 안내를 제공합니다.

Google 사용자 인증 정보로 로그인하고 콘솔 상단에 프로젝트 풀다운이 표시되면 Cloud 콘솔의 대부분의 화면에서 프로젝트를 만들 수 있습니다. 여기 스크린샷 대부분은 API 관리자, 즉 개발자 콘솔에서 가져온 것입니다. 왼쪽 탐색에서 'API 관리자'를 클릭하거나 브라우저를 console.developers.google.com으로 직접 연결하면 쉽게 액세스할 수 있습니다.

  1. 아직 프로젝트가 없는 경우 다음 페이지로 이동할 수 있습니다.
  2. 대시보드 페이지: Gwkk2zcSPOHlRzCGsmBDqfdsEMopOgJyJzh6TunpVFOP3R7bN0-iGt81mNueGxoAei6wCqgQBENsamw3v4ozZJtQgKva6v_90dYJ-rvQjUn9U89avlG1tepDYT9HHjZmYixLD0hACQ
  3. 라이브러리 페이지: NqfejNuo6fJfiTXERiCNAFTnno1JGgudf7M2zVyM9DzXP4E6ruoVxHvFQOPW-HFL5SZvm-WohzPTf7njBS9VCwuu4XnwhQ7CB83tNkH0jsYEx31hO6UMBVHPJS1BMjidg5kh-c7MEw
  4. 또는 완전히 빈 페이지: LcJ-wgOFlYa9uZm46fwUkfFTkXIcbhuk607KDaCz8_8NM09RHblz6T5JoWhH7uwSE2q6hKW9XnlutzUqd8yvRAEXFzQjqNNTuscj19yKGkMjbPixeUB8-F1y4Tz7eCpeOEzBUw70yw 이 세 번째 문제가 발생하면 브라우저를 새로고침하여 보관함 페이지로 이동하세요.
  5. 대시보드 또는 라이브러리 페이지에서 페이지 상단의 프로젝트 선택기를 클릭합니다. 3f5REVgveKDcJ8wG2C9gduFBftJb6RNtdQQJ79vwFmQCMU8_t_vxja8jPGIK-ZrpjSqGkRkY4k02xth-7FWNPj4GZUdcBmKQe97LporGaLvwIFzzR5wtH5mEEoA1a74_fnrh9YAqqg
  6. 다음으로 선택기 대화상자가 표시됩니다. 오른쪽의 '+'를 클릭하여 새 프로젝트를 만듭니다. jNzs1bp1eWkpJT3S3AGTm9ejYT2mB3rEd1QajOhO0AR3YxcwaCcF4WlMzdmgOFtlIPQfGEMUysM6m7r89_Fc0Dyy--mjPhCEKdLRZjaozLOvoZOzKtIxdMoWFHCVc2N1K-2HES_k4Q
  7. '+'를 클릭하면 새 프로젝트 페이지가 표시됩니다. 모든 일반 계정에는 기본적으로 12개의 프로젝트가 제공됩니다. 첫 번째 프로젝트를 만들기 전에 Google API 서비스 약관에 동의해야 합니다. bCB0sQ6k5nfrajlhc-S61MVzyYYBqu6XVNKeRDzXNvKZUNlSeVJSLbkP8sPNi5A-5hWIFzhsQ5R_ER9BBb2bE_B02c1neY2iO5SSe6XDFldppsXbkWm63-0l3ugtSDQS-TeM1d773w

이렇게 하면 향후 프로젝트를 만들 때 이메일 요청 및 서비스 약관 질문이 표시되지 않습니다.

Pj31ZKoAAnw_JiSz8io7e4yC2Xh3voETusvePf0DS64IMB4aVy9CtANg2r-2NgPxLjbqcfd-Vs33ZNdN7Diz7sZo3j-MKS83SuNXlhGT8ivdhpIvizP1dsYeK1MBQ4HlDZA5aQkIhg 5. 이전에 하나 이상의 프로젝트를 만든 적이 있다면 로그인 후 마지막으로 작업한 프로젝트의 대시보드로 이동합니다. 여기에서 프로젝트 선택 > +를 선택하는 것처럼 새 프로젝트를 만듭니다. 6. 새 프로젝트가 생성되면 대시보드 페이지로 돌아갑니다. ana4q1H1Q8KNTBEVb62Cc6NVA8VZbxb6BLgf4-bLqLV-p7n8UWv3WW3FN-49CE0x1kARav3pelxOBwNuUDELmitMRFhUNXuaw9-CH9DO3Lek_ifnaI3ZsxSy67Z1UsBO95SPFqlf8Q

이제 프로젝트를 만들었으며 프로젝트에 사용할 API를 선택하여 다음 단계로 이동할 수 있습니다.

Google API 사용 설정

Google API 사용을 시작하려면 먼저 이를 사용 설정해야 합니다. 아래 예시에서는 Cloud Vision API를 사용 설정하기 위해 필요한 항목을 보여줍니다. 이 Codelab에서는 하나 이상의 API가 사용될 수 있으며, 이를 사용하기 전 비슷한 단계에 따라 사용 설정해야 합니다.

Cloud Shell 사용

Cloud Shell을 사용하는 경우 다음 명령어를 사용하여 API를 사용 설정할 수 있습니다.

gcloud services enable vision.googleapis.com

Cloud Console 사용

또한 API 관리자에서 Vision API를 사용 설정할 수 있습니다. Cloud Console에서 API 관리자로 이동하고 '라이브러리'를 선택합니다.

mg03by3QV6kco0rVVV_8IA6VobAoMG4Yoyl-PofNM0dHK8IcoDmpoLUwWeiKFFjpxHWlS1td5-0n7kNkfqHVhSsTSW_hUMvRu3D72g3LCFb7u4v4bla_Z4XyonTVK8PpigMLJcE01g

검색 창에 'vsion'을 입력하면서 표시된 Vision API를 선택합니다. 입력을 시작하면 다음과 같이 표시됩니다.

B6fWWsVhymufgQx6oGIq4sgukK6JQ1VoguVOrSNf_anQb6Cv6RTLtsjx5Qdeu3-uO8-8PyqwZLYdDDjYW5o56R47cnsd_88RKTMqNkpFeDESW2hmBM_7FK2UAMz1_216yXERYSp_JA

Cloud Vision API를 선택하여 아래 보이는 대화상자가 표시되면 '사용 설정' 버튼을 클릭합니다.

D-MONPLi0UWH6Dp607Dod6JF-LJQZIiUQEPQNKM4Y0mSt09KfipbeeXRAE6cokArBYTfL9VQoONc4L0jlnsUYLsNytQIPfSKr9lCDrXmrrx-1w64LeWWa-byDxcyYWZdCI0mAcVzBw

비용

많은 Google API가 비용 없이 사용될 수 있지만 GCP(제품 및 API) 사용은 무료가 아닙니다. 위에 설명된 것처럼 Vision API를 사용 설정하면 활성 결제 계정을 묻는 메시지가 표시될 수 있습니다. 이를 사용 설정하기 전 Vision API의 가격 책정 정보를 확인해야 합니다. 특정 Google Cloud Platform (GCP) 제품에는 '항상 무료' 등급이 포함되며, 이를 초과할 경우에만 결제가 발생할 수 있습니다. 이 Codelab에서는 Vision API에 대한 각 호출이 이 무료 등급에 해당하므로, 1개월 내 총 사용량이 한도 내로 유지되는 한 비용이 발생하지 않습니다.

G Suite와 같은 일부 Google API는 Google Workspace는 월별 구독에 사용량이 포함되어 있으므로, Gmail, Google Drive, Calendar, Docs, Sheets, Slides API와 같은 서비스 사용 비용이 직접 청구되지 않습니다. 각 Google 제품마다 결제 방식이 다르므로, API 문서에서 해당 정보를 확인해야 합니다.

요약

이 Codelab에서는 Google Drive API만 사용 설정하면 되므로 위의 안내에 따라 'Drive'를 검색합니다. 사용 설정되면 계속 진행합니다.

API 요청 승인 (사용자 승인)

승인 소개(및 일부 인증)

API에 요청을 수행하기 위해서는 애플리케이션이 적절한 승인을 수행해야 합니다. 비슷한 단어인 인증은 로그인 사용자 인증 정보를 설명합니다. 사용자가 Google 계정에 로그인할 때는 로그인 및 비밀번호를 사용하여 자신을 인증해야 합니다. 인증 후에는 Cloud Storage에 있는 Blob 파일 또는 Google 드라이브에 있는 사용자의 개인 파일과 같은 데이터에 액세스할 수 있도록 사용자 또는 사용자의 코드승인됩니다.

Google API는 여러 유형의 승인을 지원하지만, Google Workspace API 사용자에게 가장 일반적인 것은 사용자 승인입니다. 이 Codelab의 예시 애플리케이션은 최종 사용자에게 속하는 데이터에 액세스합니다. 이러한 최종 사용자는 자신의 데이터에 액세스하기 위해 귀하의 앱에 대해 권한을 부여해야 합니다. 즉, 귀하의 코드가 사용자 계정 OAuth2 사용자 인증 정보를 획득해야 합니다.

사용자 승인을 위해 OAuth2 사용자 인증 정보를 가져오기 위해서는 API 관리자로 돌아가고 왼쪽 탐색에서 '사용자 인증 정보' 탭을 선택합니다.

Y33PZ_rJC1y7NH7Rrvq1kN_WxZ9CppDGJK8tTSaha298Jlm5pMqgnyweIO4oX34fcLy0_VI4gihYu5wpEM_LeJg1iDAFoidhUVyfqJX3QTzODQ_OGjHLXYBxPpUvihCJi9JGwvMREw

여기에 도착하면 3개의 개별 섹션에 모든 사용자 인증 정보가 표시됩니다.

ComE4qh76dwZbIehkDUm1QawHGia_qVe7w7rkmgbeo_wjWS--kqXCt4_zvm55iy_RXA8dKYKvBxIKazkcYQ8871SA_kNslbvum_n1Ju4k9qJJSMtDhPAnofcvIlqlKm1nu7PBQhmEg

첫 번째는 API 키에 대한 것이고, 두 번째는 OAuth 2.0 클라이언트 ID, 마지막은 OAuth2 서비스 계정을 위한 것입니다. 여기에서는 가운데 항목을 사용합니다.

사용자 인증 정보 만들기

사용자 인증 정보 페이지에서 위에 있는 + 사용자 인증 정보 만들기 버튼을 클릭하면 'OAuth 클라이언트 ID'를 선택할 수 있는 대화상자가 표시됩니다.

C7jTddfrczo3GewPGCxbxX13GawtFc6FGvAPFusPc_IW-tr5M6xgXd1OzOHOUTo86WDa9fXiCITogv9b3wAgOcYM7xS3AmVNaPdTxbAynIe_sia2_x3LEPsBrdbX8NjeI2WaHRioOA

다음 화면에서는 앱의 승인 '동의 화면'을 구성하고 애플리케이션 유형을 선택하는 두 가지 작업을 수행할 수 있습니다.

El9_aqPQ6Q9hOsOp3JUC5qnCm_A_BVI-oCEfPk_MsvybnWBmC5lT6CtXSoZ7EQoFzrcBEzo4zF9s8CbhXyo0e-eSY3pZ1zg0BRvT0YssMMhbzEG-gP_jiO8v9q9HYTjg-QW5jJ0RDA

동의 화면을 설정하지 않으면 Console에 경고가 표시되고, 지금 작업을 수행해야 합니다. (동의 화면이 이미 설정되었으면 이를 건너뛰고 다음 단계를 진행합니다.)

'동의 화면 구성'을 클릭하고 '외부' 앱 (Google Workspace 고객의 경우에는 '내부')을 선택합니다.

5w-9R6gPvUHFzODZxXy-0GEhL8ZGDGNea3QtMp1FFYDv5DJ_MIDD21NEh3CzI-GKNzy6bkhH7bohxOG8icQTegiWlavOQhQqhSy7K31Ma3YTI9aAP3P-LmTBanPslX1cnjKLVZBi8A

이 연습에서는 Codelab 샘플을 게시하지 않기 때문에 무엇을 선택하든 중요하지 않습니다. 대부분의 경우 '외부'를 선택하여 더 복잡한 화면으로 연결되지만, 실제로 맨 위에 있는 '애플리케이션 이름' 필드만 작성하면 됩니다.

8e9z_RQz8lumYbDIcBvm57_Gpptn9uhrVQHoRzJ01AJNOFmXloDO7Eg3hhzJZZIU2F5rR0MxTCw-oXVFCq683xUwD4O33pXeuFsOMtM8EZhyjDoYc8Kv4hEoaG0Ztq9ePx6De7YmfA

지금은 애플리케이션 이름만 필요하므로, 수행 중인 Codelab을 나타내는 사람을 선택한 후 저장을 클릭합니다.

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

이제 사용자 인증 정보 탭으로 돌아가서 OAuth2 클라이언트 ID를 만듭니다. 여기에는 만들 수 있는 여러 OAuth 클라이언트 ID가 표시됩니다.

f8reuhsxOUNLcVrEIyRVsmP_fX_ceIlLvEKql1YHwSPW9jk9Mm9fJ0UlfUoi8eRN3QQXar4xtpo071zj6LSczNN7TYY8zB96Dn6ICZuvCAtjIgJSKdMSlX-ZhMuSWFpxxv661aUemw

기타에 해당하는 명령줄 도구를 개발하는 중이므로, 이를 선택하고 만들기 버튼을 클릭합니다. 만들려는 앱을 나타내는 클라이언트 ID를 선택하거나 단순히 일반적으로 'Other client N'인 기본 이름을 선택합니다.

사용자 인증 정보 저장

  1. 새 사용자 인증 정보 대화상자가 나타나면 확인을 클릭하여 닫습니다.

rAwekj_GNEuVwGbZOYYlGDQjlu4flE61OPEZIUmwMI5vGi3W365UwVCxi0mVNhg4WZSSczZywrZZ6NDM_U0FJ4b-TOIMEC189uybOJjgn8F_axesVMopel9RlehRBXdEFhN4d41WGQ

  1. 사용자 인증 정보 페이지로 돌아와서 'OAuth2 클라이언트 ID' 섹션으로 스크롤하고 새로 생성된 클라이언트 ID의 오른쪽 끝에 있는 다운로드 아이콘 aAmje6kT_xSUM4BKIlPREpjosx7C_xxwpWqBgiGVfVWxQ8nnQOfxTPhuU0QwSnmbjykZffGrqyP1nnKrEQ7D7OqYaGw_Uzscs9gX2RwwP4AmvtHIiTFLa0gkprzJSjG9pQSx7HtmSQ을 찾아서 클릭합니다. x-vb-sKZy-X8a1X4uTsBWotSd4wn0PGt4mHMNv6DUrq5J5ihpujUyTiIVr5SHw0p2ZDy0KTP-zqOaFX-Az9BYDWG90KNFmsRLTUOo1mUVk7dYRJiK3VwYJNU0bbxjsbbpqcTr5_oLw
  2. 그러면 client_secret-LONG-HASH-STRING.apps.googleusercontent.com.json과 같은 이름의 파일을 다운로드 폴더에 저장하는 대화상자가 열립니다. client_secret.json(샘플 앱에 사용되는 이름)과 같이 쉬운 이름으로 줄이고, 이 Codelab에서 샘플 앱을 만드는 디렉터리/폴더에 저장하는 것이 좋습니다.