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

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

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

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

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

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

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

מידע נוסף