מדריך למתחילים בנושא Python ללקוחות

פועלים לפי השלבים במדריך למתחילים הזה, ובתוך כ-10 דקות תהיה לכם אפליקציית שורת פקודה פשוטה ב-Python ששולחת בקשות ל-API של הלקוח להרשמה ללא מגע.

דרישות מוקדמות

כדי להריץ את המדריך למתחילים הזה, צריך:

  • חשבון Google שמשויך לחשבון הלקוח שלכם להרשמה דרך הארגון. תחילת העבודה
  • Python 3.0 ואילך.
  • הכלי לניהול חבילות pip.
  • גישה לאינטרנט ודפדפן אינטרנט.

שלב 1: מפעילים את ה-API להרשמה ללא מגע

  1. אפשר להשתמש באשף הזה כדי ליצור או לבחור פרויקט ב-Google Developers Console ולהפעיל את ה-API באופן אוטומטי. לוחצים על המשך ואז על כניסה לפרטי הכניסה.
  2. לוחצים על ביטול בדף Create credentials (יצירת פרטי כניסה).
  3. בחלק העליון של הדף, לוחצים על הכרטיסייה מסך הסכמה ל-OAuth. בוחרים כתובת אימייל, מזינים את הערך Product name (אם עדיין לא הוגדר) ולוחצים על הלחצן Save.
  4. בוחרים בכרטיסייה Credentials, לוחצים על Create credentials ובוחרים באפשרות OAuth client ID.
  5. בוחרים את סוג האפליקציה אחר, מזינים את השם 'מדריך למתחילים' ולוחצים על הלחצן Create.
  6. לוחצים על OK כדי לסגור את החלונית OAuth client.
  7. לוחצים על הורדת JSON.
  8. צריך להעביר את הקובץ לספריית העבודה ולשנות את השם שלו ל-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

בפעם הראשונה שמפעילים את האפליקציה, צריך לתת הרשאה לגישה:

  1. האפליקציה תנסה לפתוח כרטיסייה חדשה בדפדפן ברירת המחדל. אם הפעולה הזו נכשלת, מעתיקים את כתובת ה-URL מהמסוף ופותחים אותה בדפדפן. אם עדיין לא נכנסתם לחשבון Google, תתבקשו להיכנס אליו. אם אתם מחוברים לכמה חשבונות Google, תוצג לכם בקשה לבחור חשבון להרשאה.
  2. לוחצים על אישור.
  3. סוגרים את הכרטיסייה בדפדפן – האפליקציה ממשיכה לפעול.

הערות

  • מכיוון שספריית הלקוח של Google API שומרת את נתוני ההרשאה במערכת הקבצים, לא תופיע בקשה להרשאה בהפעלות הבאות.
  • כדי לאפס את נתוני ההרשאה של האפליקציה, מוחקים את הקובץ user_credential.json ומפעילים שוב את האפליקציה.
  • תהליך ההרשאה במדריך למתחילים הזה אידיאלי לאפליקציית שורת הפקודה. מידע על הוספת הרשאה לאפליקציית אינטרנט זמין במאמר שימוש ב-OAuth 2.0 לאפליקציות של שרת אינטרנט.

פתרון בעיות

ריכזנו כאן כמה דברים נפוצים שכדאי לבדוק. נשמח לדעת מה השתבש במדריך למתחילים, ונעבוד על תיקון הבעיה.

  • מוודאים שאתם נותנים הרשאה לקריאות API באמצעות אותו חשבון Google שמשויך לחשבון הלקוח שלכם בתוכנית ההרשמה ללא מגע. כדי לבדוק את הגישה, נסו להיכנס לפורטל של ההרשמה דרך הארגון באמצעות אותו חשבון Google.
  • מוודאים שהחשבון אישר את התנאים וההגבלות העדכניים בפורטל. חשבונות לקוח

מידע נוסף