คู่มือเริ่มใช้งานฉบับย่อสําหรับ Python

ทําตามขั้นตอนที่อธิบายไว้ในส่วนที่เหลือของหน้านี้เพื่อสร้างแอปพลิเคชันบรรทัดคําสั่ง Python ที่เรียบง่ายซึ่งส่งคําขอไปยัง Classroom API

สิ่งที่ต้องมีก่อน

คุณต้องมีข้อกําหนดเบื้องต้นต่อไปนี้จึงจะเรียกใช้คู่มือเริ่มต้นฉบับย่อได้

  • Python 2.6 ขึ้นไป
  • เครื่องมือการจัดการแพ็กเกจ pip
  • โปรเจ็กต์ Google Cloud Platform ที่เปิดใช้ API หากต้องการสร้างโปรเจ็กต์และเปิดใช้ API โปรดดูสร้างโปรเจ็กต์และเปิดใช้ API
  • ข้อมูลเข้าสู่ระบบการให้สิทธิ์สําหรับแอปพลิเคชันเดสก์ท็อป หากต้องการดูวิธีสร้างข้อมูลเข้าสู่ระบบสําหรับแอปพลิเคชันเดสก์ท็อป โปรดดูสร้างข้อมูลเข้าสู่ระบบ

  • บัญชี G Suite for Education ที่เปิดใช้ Google Classroom

ขั้นตอนที่ 1: ติดตั้งไลบรารีของไคลเอ็นต์ Google

หากต้องการติดตั้งไลบรารีของไคลเอ็นต์ Google สําหรับ Python ให้เรียกใช้คําสั่งต่อไปนี้

  pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

สําหรับตัวเลือกการติดตั้งอื่นๆ โปรดดูส่วนการติดตั้งจากไลบรารี Python's

ขั้นตอนที่ 2: กําหนดค่าตัวอย่าง

วิธีกําหนดค่าตัวอย่าง

  1. สร้างไฟล์ชื่อ quickstart.py ในไดเรกทอรีการทํางาน
  2. ใส่โค้ดต่อไปนี้ใน quickstart.py

    classroom/quickstart/quickstart.py
    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
    
    # If modifying these scopes, delete the file token.json.
    SCOPES = ['https://www.googleapis.com/auth/classroom.courses.readonly']
    
    
    def main():
        """Shows basic usage of the Classroom API.
        Prints the names of the first 10 courses the user has access to.
        """
        creds = None
        # 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(
                    'credentials.json', SCOPES)
                creds = flow.run_local_server(port=0)
            # Save the credentials for the next run
            with open('token.json', 'w') as token:
                token.write(creds.to_json())
    
        try:
            service = build('classroom', 'v1', credentials=creds)
    
            # Call the Classroom API
            results = service.courses().list(pageSize=10).execute()
            courses = results.get('courses', [])
    
            if not courses:
                print('No courses found.')
                return
            # Prints the names of the first 10 courses.
            print('Courses:')
            for course in courses:
                print(course['name'])
    
        except HttpError as error:
            print('An error occurred: %s' % error)
    
    
    if __name__ == '__main__':
        main()

ขั้นตอนที่ 3: เรียกใช้ตัวอย่าง

วิธีเรียกใช้ตัวอย่าง

  1. เรียกใช้คําสั่งต่อไปนี้จากบรรทัดคําสั่ง

    python quickstart.py
    
  2. (ไม่บังคับ) หากนี่เป็นครั้งแรกที่คุณเรียกใช้ตัวอย่าง ตัวอย่างจะเปิดหน้าต่างใหม่ที่แจ้งให้คุณเข้าถึงข้อมูล

    1. หากยังไม่ได้ลงชื่อเข้าใช้บัญชี Google คุณจะได้รับข้อความแจ้งให้ลงชื่อเข้าใช้ หากลงชื่อเข้าใช้บัญชี Google หลายบัญชี ระบบจะขอให้คุณเลือก 1 บัญชีที่จะใช้สําหรับการให้สิทธิ์
  3. ตัวอย่างจะดําเนินการ

หากพบปัญหา โปรดดูส่วนแก้ปัญหาตัวอย่าง

แก้ปัญหาตัวอย่าง

ส่วนนี้จะกล่าวถึงปัญหาที่พบบ่อยที่คุณอาจพบขณะพยายามเรียกใช้คู่มือเริ่มใช้งานฉบับย่อนี้ และแนะนําวิธีแก้ปัญหาที่เป็นไปได้

AttributeError: 'Module_six_moves_urllib_parse' object has no attribute 'urlparse'

ข้อผิดพลาดนี้อาจเกิดขึ้นใน Mac OSX ที่มีการติดตั้งโมดูล six เริ่มต้น (การขึ้นต่อกันของไลบรารี Python) ก่อนที่จะโหลด PIP ปัญหานี้แก้ไขได้โดยการเพิ่มตําแหน่งการติดตั้ง pip&#39 ลงในตัวแปรสภาพแวดล้อมของระบบ PYTHONPATH ดังนี้

  1. ระบุตําแหน่งการติดตั้ง pip'ด้วยคําสั่งต่อไปนี้

    pip show six | grep "Location:" | cut -d " " -f2
    
  2. เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ ~/.bashrc โดยแทนที่ <pip_install_path> ด้วยค่าที่ระบุไว้ด้านบน

    export PYTHONPATH=$PYTHONPATH:<pip_install_path>
    
  3. โหลดไฟล์ ~/.bashrc ซ้ําในหน้าต่างเทอร์มินัลแบบเปิดโดยใช้คําสั่งต่อไปนี้

    source ~/.bashrc
    

TypeError: sequence item 0: expected str instance, bytes found

ข้อผิดพลาดนี้เกิดจากข้อบกพร่องใน httplib2 หากต้องการแก้ไขปัญหานี้ ให้อัปเกรด httplib2 เป็นเวอร์ชันล่าสุดโดยใช้คําสั่งนี้

pip install --upgrade httplib2

Cannot uninstall 'six'

คุณอาจได้รับข้อผิดพลาดต่อไปนี้เมื่อเรียกใช้คําสั่ง pip install

"ไม่สามารถถอนการติดตั้ง 'six' โปรแกรมนี้เป็นโปรเจ็กต์ที่ติดตั้งแบบไม่มีค่าใช้จ่าย เราจึงไม่สามารถระบุได้อย่างแม่นยําว่าไฟล์ใดเป็นของไฟล์นั้น ซึ่งจะนําไปสู่การถอนการติดตั้งเพียงบางส่วนเท่านั้น"

ข้อผิดพลาดนี้เกิดขึ้นใน Mac OSX เมื่อ PIP พยายามอัปเกรดแพ็กเกจ six ที่ติดตั้งไว้ล่วงหน้า หากต้องการหลีกเลี่ยงปัญหานี้ ให้เพิ่มแฟล็ก --ignore-installed six ในคําสั่ง pip install ที่แสดงในขั้นตอนที่ 2

This app isn't verified

หากหน้าจอคํายินยอม OAuth แสดงคําเตือน "แอปนี้ยังไม่ได้รับการยืนยัน"แอปของคุณกําลังขอขอบเขตที่ให้สิทธิ์เข้าถึงข้อมูลผู้ใช้ที่ละเอียดอ่อน หากแอปพลิเคชันใช้ขอบเขตที่ละเอียดอ่อน แอปของคุณต้องผ่านขั้นตอนการยืนยันเพื่อนําคําเตือนและข้อจํากัดอื่นๆ ออก ในช่วงพัฒนา คุณสามารถดําเนินการต่อผ่านคําเตือนนี้ได้โดยเลือก Advanced > ไปที่ {Project Name}(ไม่ปลอดภัย)

File not found error for credentials.json

เมื่อเรียกใช้ตัวอย่าง คุณอาจได้รับไฟล์ไม่พบหรือไม่มีข้อผิดพลาดไฟล์เกี่ยวกับข้อมูลรับรอง.json

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณไม่ได้ให้สิทธิ์ข้อมูลเข้าสู่ระบบแอปพลิเคชันบนเดสก์ท็อปโดยละเอียดในส่วนข้อกําหนดเบื้องต้นด้านบน หากต้องการดูวิธีสร้างข้อมูลเข้าสู่ระบบสําหรับแอปพลิเคชันเดสก์ท็อป ให้ไปที่หัวข้อสร้างข้อมูลเข้าสู่ระบบ

เมื่อสร้างข้อมูลรับรองแล้ว ให้ตรวจสอบว่าบันทึกไฟล์ JSON ที่ดาวน์โหลดไว้เป็น credentials.json จากนั้นย้ายไฟล์ไปยังไดเรกทอรีที่ทํางานอยู่โดยใช้โค้ดโค้ดเริ่มต้นฉบับย่อที่เหลือ

อ่านเพิ่มเติม

ดูข้อมูลเพิ่มเติมเกี่ยวกับ API ที่ใช้ในการเริ่มต้นฉบับย่อนี้ได้จากรายการต่อไปนี้