고객을 위한 Python 빠른 시작
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
이 빠른 시작 가이드의 단계에 따라 약 10분 내에 제로터치 등록 고객 API를 요청하는 간단한 Python 명령줄 앱을 만들 수 있습니다.
기본 요건
이 빠른 시작을 실행하려면 다음이 필요합니다.
- 제로터치 등록 고객 계정의 구성원인 Google 계정 시작하기를 참고하세요.
- Python 3.0 이상
- pip 패키지 관리 도구.
- 인터넷 및 웹브라우저 액세스
1단계: 제로터치 등록 API 사용 설정
- 이 마법사를 사용하여 Google Developers Console에서 프로젝트를 만들거나 선택하고 API를 자동으로 사용 설정합니다. 계속을 클릭한 다음 사용자 인증 정보로 이동을 클릭합니다.
- '사용자 인증 정보 만들기'에서 취소를 클릭합니다.
- 페이지 상단에서 OAuth 동의 화면 탭을 선택합니다. 이메일 주소를 선택하고 아직 설정하지 않은 경우 제품 이름을 입력한 다음 저장 버튼을 클릭합니다.
- 사용자 인증 정보 탭을 선택하고 사용자 인증 정보 만들기 버튼을 클릭한 다음 OAuth 클라이언트 ID를 선택합니다.
- 애플리케이션 유형 기타를 선택하고 '빠른 시작'이라는 이름을 입력한 후 만들기 버튼을 클릭합니다.
- 확인을 클릭하여 OAuth 클라이언트 패널을 닫습니다.
- file_download JSON 다운로드를 클릭합니다.
- 파일을 작업 디렉터리로 이동하고 이름을
client_secret.json
로 바꿉니다.
2단계: Google 클라이언트 라이브러리 설치
pip를 사용하여 라이브러리를 설치하려면 다음 명령어를 실행합니다.
pip install --upgrade google-api-python-client oauth2client
다양한 설치 옵션은 라이브러리의 설치 페이지를 참고하세요.
3단계: 샘플 설정
작업 디렉터리에 quickstart.py
라는 파일을 만듭니다. 다음 코드를 복사하여 파일을 저장합니다.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Zero-touch enrollment quickstart sample.
This script forms the quickstart introduction to the zero-touch enrollemnt
customer API. To learn more, visit https://developer.google.com/zero-touch
"""
import sys
from apiclient import discovery
import httplib2
from oauth2client import tools
from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage
# A single auth scope is used for the zero-touch enrollment customer API.
SCOPES = ['https://www.googleapis.com/auth/androidworkzerotouchemm']
CLIENT_SECRET_FILE = 'client_secret.json'
USER_CREDENTIAL_FILE = 'user_credential.json'
def get_credential():
"""Creates a Credential object with the correct OAuth2 authorization.
Ask the user to authorize the request using their Google Account in their
browser. Because this method stores the cedential in the
USER_CREDENTIAL_FILE, the user is typically only asked to the first time they
run the script.
Returns:
Credentials, the user's credential.
"""
flow = flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
storage = Storage(USER_CREDENTIAL_FILE)
credential = storage.get()
if not credential or credential.invalid:
credential = tools.run_flow(flow, storage) # skipping flags for brevity
return credential
def get_service():
"""Creates a service endpoint for the zero-touch enrollment API.
Builds and returns an authorized API client service for v1 of the API. Use
the service endpoint to call the API methods.
Returns:
A service Resource object with methods for interacting with the service.
"""
http_auth = get_credential().authorize(httplib2.Http())
return discovery.build('androiddeviceprovisioning', 'v1', http=http_auth)
def main():
"""Runs the zero-touch enrollment quickstart app.
"""
# Create a zero-touch enrollment API service endpoint.
service = get_service()
# Get the customer's account. Because a customer might have more
# than one, limit the results to the first account found.
response = service.customers().list(pageSize=1).execute()
if 'customers' not in response:
# No accounts found for the user. Confirm the Google Account
# that authorizes the request can access the zero-touch portal.
print('No zero-touch enrollment account found.')
sys.exit()
customer_account = response['customers'][0]['name']
# Send an API request to list all the DPCs available using the customer
# account.
results = service.customers().dpcs().list(parent=customer_account).execute()
# Print out the details of each DPC.
for dpc in results['dpcs']:
# Some DPCs may not have a name, so replace with a marker.
if 'dpcName' in dpc:
dpcName = dpc['dpcName']
else:
dpcName = "-"
print('Name:{0} APK:{1}'.format(dpcName, dpc['packageName']))
if __name__ == '__main__':
main()
4단계: 샘플 실행
운영체제의 도움말을 사용하여 파일에서 스크립트를 실행합니다. UNIX 및 Mac 컴퓨터의 경우 터미널에서 아래 명령어를 실행합니다.
python quickstart.py
앱을 처음 실행할 때 액세스를 승인해야 합니다.
- 앱이 기본 브라우저에서 새 탭을 열려고 시도합니다. 실패하면 콘솔에서 URL을 복사하여 브라우저에서 엽니다. 아직 Google 계정에 로그인하지 않은 경우 로그인하라는 메시지가 표시됩니다. 여러 Google 계정에 로그인한 경우 승인할 계정을 선택하라는 메시지가 페이지에 표시됩니다.
- 수락을 클릭합니다.
- 브라우저 탭을 닫습니다. 앱은 계속 실행됩니다.
참고
- Google API 클라이언트 라이브러리는 파일 시스템에 승인 데이터를 저장하므로 후속 실행 시 승인 메시지가 표시되지 않습니다.
- 앱의 승인 데이터를 재설정하려면
user_credential.json
파일을 삭제하고 앱을 다시 실행합니다.
- 이 빠른 시작의 승인 흐름은 명령줄 앱에 적합합니다. 웹 앱에 승인을 추가하는 방법을 알아보려면
웹 서버 애플리케이션용 OAuth 2.0 사용을 참고하세요.
문제 해결
다음은 확인해야 할 일반적인 사항입니다.
빠른 시작에
문제가 있으면 알려주세요. 문제를 해결하기 위해 노력하겠습니다.
- 제로터치 등록 고객 계정의 구성원인 동일한 Google 계정으로 API 호출을 승인하고 있는지 확인합니다. 동일한 Google 계정으로 제로터치 등록 포털에 로그인하여 액세스 권한을 테스트해 보세요.
- 계정이 포털에서 최신 서비스 약관에 동의했는지 확인합니다.
고객 계정을 참고하세요.
자세히 알아보기
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2025-08-29(UTC)
[null,null,["최종 업데이트: 2025-08-29(UTC)"],[[["\u003cp\u003eThis quickstart guide helps you create a simple Python command-line application that interacts with the zero-touch enrollment customer API in approximately 10 minutes.\u003c/p\u003e\n"],["\u003cp\u003eTo use this guide, you will need a Google account linked to your zero-touch enrollment customer account, Python 3.0 or greater, the pip package manager, internet access, and a web browser.\u003c/p\u003e\n"],["\u003cp\u003eThe guide involves enabling the zero-touch enrollment API, installing the Google client library using pip, setting up the sample code in a \u003ccode\u003equickstart.py\u003c/code\u003e file, and finally, running the sample.\u003c/p\u003e\n"],["\u003cp\u003eThe sample code provided retrieves the customer's account information and lists the available DPCs (Device Policy Controllers), printing their details.\u003c/p\u003e\n"],["\u003cp\u003eThe first time the app is run, it will require you to authorize it through your default browser, but subsequent runs will not if the authorization data is stored in the \u003ccode\u003euser_credential.json\u003c/code\u003e file.\u003c/p\u003e\n"]]],["This guide outlines creating a Python command-line app to interact with the zero-touch enrollment customer API. Steps involve enabling the API in the Google Developers Console, creating OAuth credentials, and downloading the `client_secret.json` file. The guide then directs users to install the `google-api-python-client` and `oauth2client` libraries using pip. Finally, a `quickstart.py` sample script is provided to list DPCs for a customer account. The script requires one-time authorization through a web browser.\n"],null,["# Python quickstart for customers\n\nFollow the steps in this quickstart guide, and in about 10 minutes you have\na simple Python command-line app that makes requests to the zero-touch\nenrollment customer API.\n\nPrerequisites\n-------------\n\nTo run this quickstart, you need:\n\n- A Google account, that's a member of your zero-touch enrollment customer account. See [Get\n started](/zero-touch/guides/customer/how-it-works#get_started).\n- Python 3.0 or greater.\n- The [pip](https://pypi.python.org/pypi/pip) package management tool.\n- Access to the internet and a web browser.\n\nStep 1: Turn on the zero-touch enrollment API\n---------------------------------------------\n\n1. Use [this\n wizard](https://console.developers.google.com/start/api?id=androiddeviceprovisioning.googleapis.com) to create or select a project in the Google Developers Console and automatically turn on the API. Click **Continue** , then **Go to credentials**.\n2. Click **Cancel** on the Create credentials.\n3. At the top of the page, select the **OAuth consent screen** tab. Select an **Email address** , enter a **Product name** if not already set, and click the **Save** button.\n4. Select the **Credentials** tab, click the **Create credentials** button and select **OAuth client ID**.\n5. Select the application type **Other** , enter the name \"Quickstart\", and click the **Create** button.\n6. Click **OK** to dismiss the *OAuth client* panel.\n7. Click file_download **Download JSON**.\n8. Move the file to your working directory and rename it `client_secret.json`.\n\nStep 2: Install the Google client library\n-----------------------------------------\n\nRun the following command to install the library using pip: \n\n pip install --upgrade google-api-python-client oauth2client\n\nSee the library's [installation\npage](/api-client-library/python/start/installation) for different installation\noptions.\n\nStep 3: Set up the sample\n-------------------------\n\nCreate a file named `quickstart.py` in your working directory. Copy in the\nfollowing code and save the file. \n\n```python\n#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\"\"\"Zero-touch enrollment quickstart sample.\n\nThis script forms the quickstart introduction to the zero-touch enrollemnt\ncustomer API. To learn more, visit https://developer.google.com/zero-touch\n\"\"\"\n\nimport sys\nfrom apiclient import discovery\nimport httplib2\nfrom oauth2client import tools\nfrom oauth2client.client import flow_from_clientsecrets\nfrom oauth2client.file import Storage\n\n# A single auth scope is used for the zero-touch enrollment customer API.\nSCOPES = ['https://www.googleapis.com/auth/androidworkzerotouchemm']\nCLIENT_SECRET_FILE = 'client_secret.json'\nUSER_CREDENTIAL_FILE = 'user_credential.json'\n\n\ndef get_credential():\n \"\"\"Creates a Credential object with the correct OAuth2 authorization.\n\n Ask the user to authorize the request using their Google Account in their\n browser. Because this method stores the cedential in the\n USER_CREDENTIAL_FILE, the user is typically only asked to the first time they\n run the script.\n\n Returns:\n Credentials, the user's credential.\n \"\"\"\n flow = flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)\n storage = Storage(USER_CREDENTIAL_FILE)\n credential = storage.get()\n\n if not credential or credential.invalid:\n credential = tools.run_flow(flow, storage) # skipping flags for brevity\n return credential\n\n\ndef get_service():\n \"\"\"Creates a service endpoint for the zero-touch enrollment API.\n\n Builds and returns an authorized API client service for v1 of the API. Use\n the service endpoint to call the API methods.\n\n Returns:\n A service Resource object with methods for interacting with the service.\n \"\"\"\n http_auth = get_credential().authorize(httplib2.Http())\n return discovery.build('androiddeviceprovisioning', 'v1', http=http_auth)\n\n\ndef main():\n \"\"\"Runs the zero-touch enrollment quickstart app.\n \"\"\"\n # Create a zero-touch enrollment API service endpoint.\n service = get_service()\n\n # Get the customer's account. Because a customer might have more\n # than one, limit the results to the first account found.\n response = service.customers().list(pageSize=1).execute()\n\n if 'customers' not in response:\n # No accounts found for the user. Confirm the Google Account\n # that authorizes the request can access the zero-touch portal.\n print('No zero-touch enrollment account found.')\n sys.exit()\n customer_account = response['customers'][0]['name']\n\n # Send an API request to list all the DPCs available using the customer\n # account.\n results = service.customers().dpcs().list(parent=customer_account).execute()\n\n # Print out the details of each DPC.\n for dpc in results['dpcs']:\n # Some DPCs may not have a name, so replace with a marker.\n if 'dpcName' in dpc:\n dpcName = dpc['dpcName']\n else:\n dpcName = \"-\"\n print('Name:{0} APK:{1}'.format(dpcName, dpc['packageName']))\n\n\nif __name__ == '__main__':\n main()\n```\n\nStep 4: Run the sample\n----------------------\n\nUse your operating system's help to run the script in the file. On UNIX and Mac\ncomputers, run the command below in your terminal: \n\n python quickstart.py\n\nThe first time you run the app, you need to authorize access:\n\n1. The app tries to open a new tab in your default browser. If this fails, copy the URL from the console and open it in your browser. If you're not already logged into your Google Account, you're prompted to log in. If you're logged into multiple Google accounts, the page prompts you to select an account for the authorization.\n2. Click **Accept**.\n3. Close the browser tab---the app continues running.\n\nNotes\n-----\n\n- Because Google API client library stores authorization data on the file system, subsequent launches don't prompt you for authorization.\n- To reset the app's authorization data, delete the `user_credential.json` file and run the app again.\n- The authorization flow in this quickstart is ideal for a command-line app. To learn how to add authorization to a web app, see [Using OAuth 2.0 for Web Server Applications](/api-client-library/python/auth/web-app).\n\nTroubleshooting\n---------------\n\nHere are some common things you'll want to check.\n[Tell us what went wrong]() with the quickstart and we'll work to fix it.\n\n- Check that you're authorizing API calls with the same Google Account that's a member of your zero-touch enrollment customer account. Try signing in to the zero-touch enrollment [portal](https://enterprise.google.com/android/zero-touch/resellers) using the same Google Account to test your access.\n- Confirm that the account has accepted the latest Terms of Service in the [portal](https://enterprise.google.com/android/zero-touch/resellers). See [Customer accounts](/zero-touch/guides/customer/auth#customer_accounts).\n\nLearn more\n----------\n\n- [Google Developers Console help documentation](/console/help/new)\n- [Google APIs Client for Python documentation](/api-client-library/python)\n- [pip User Guide](https://pip.pypa.io/en/stable/user_guide/)"]]