1. การใช้ Google Workspace API
Codelab นี้จะแนะนำให้คุณใช้ Google Workspace (เดิมคือ G Suite) RESTful API ที่อิงตาม HTTP ตัวอย่างนี้จะเขียนด้วย Python เพื่อความกระชับและพร้อมใช้งาน แต่คุณจะเลือกใช้ภาษาที่ใช้พัฒนาที่คุณชื่นชอบก็ได้ คุณจะได้เรียนรู้หัวข้อเบื้องต้น เช่น วิธีใช้คอนโซลนักพัฒนาซอฟต์แวร์เพื่อสร้าง/จัดการโปรเจ็กต์ การขอรับข้อมูลเข้าสู่ระบบการให้สิทธิ์ และการติดตั้งไลบรารีของไคลเอ็นต์ API เมื่อจัดการเรื่องรูปแบบต่างๆ เรียบร้อยแล้ว คุณจะเขียนแอปเพื่อแสดงไฟล์และโฟลเดอร์ 100 รายการแรกใน Google ไดรฟ์โดยใช้ API ของไดรฟ์
สิ่งที่คุณจะได้เรียนรู้
- สร้างโปรเจ็กต์โดยใช้ Google/Cloud Developers Console
- รับและใช้ข้อมูลเข้าสู่ระบบของแอปพลิเคชัน OAuth2 ในแอป
- ดูข้อมูลเกี่ยวกับการใช้ไลบรารีของไคลเอ็นต์ Google APIs
- เขียนแอปพลิเคชันโดยใช้ Google และ Google Workspace API
- รับข้อมูลไฟล์และโฟลเดอร์ด้วย Google ไดรฟ์ API
สิ่งที่คุณต้องมี
- สิทธิ์เข้าถึงอินเทอร์เน็ตและเว็บเบราว์เซอร์
- บัญชี Google (บัญชี Google Workspace อาจต้องได้รับการอนุมัติจากผู้ดูแลระบบ)
- คุ้นเคยกับระบบที่สอดคล้องกับ POSIX เช่น Linux และ Mac OS X
- ความสามารถในการสร้างไฟล์ต้นฉบับด้วยโปรแกรมแก้ไขโค้ดหรือคำสั่ง Shell
- ทักษะพื้นฐานใน Python (2 หรือ 3) แต่คุณสามารถใช้ภาษาที่รองรับได้
- ไฟล์และ/หรือโฟลเดอร์บางรายการใน Google ไดรฟ์
2. แบบสำรวจ
คุณจะใช้บทแนะนำ Codelab นี้อย่างไร
คุณจะให้คะแนนประสบการณ์การใช้งานเครื่องมือและ API สำหรับนักพัฒนาแอป Google Workspace เท่าใด
3. ภาพรวม
ในโค้ดแล็บนี้ คุณจะได้เรียนรู้วิธีทำสิ่งต่อไปนี้
- ดาวน์โหลดไลบรารีของไคลเอ็นต์ Google APIs สำหรับ Python
- สร้างโปรเจ็กต์ใหม่ใน Google/Cloud Developers Console
- รับข้อมูลเข้าสู่ระบบที่จำเป็นสำหรับแอป
- ใช้ข้อมูลเข้าสู่ระบบดังกล่าวเพื่อเข้าถึง Google Drive API
หากไม่ต้องการใช้ Python คุณสามารถใช้ Codelab ในเครื่องมือพัฒนาที่คุณชื่นชอบได้ (ไลบรารีของไคลเอ็นต์สำหรับภาษาที่รองรับมีให้บริการที่นี่) และเพียงอ้างอิงตัวอย่าง Python เป็นรหัสเทียม (ที่เรียกใช้งานได้)
4. ยืนยันสภาพแวดล้อม Python
Codelab นี้กำหนดให้คุณต้องใช้ภาษา Python (แม้ว่าไลบรารีของไคลเอ็นต์ Google API จะรองรับหลายภาษาก็ตาม คุณสามารถสร้างสิ่งที่เทียบเท่าในเครื่องมือพัฒนาซอฟต์แวร์ที่คุณชื่นชอบและใช้ Python เป็นรหัสเทียมได้) โดยเฉพาะอย่างยิ่ง Codelab นี้รองรับ Python 2 และ 3 แต่เราขอแนะนำให้เปลี่ยนไปใช้ 3.x โดยเร็วที่สุด
Cloud Shell เป็นเครื่องมือที่สะดวกสำหรับผู้ใช้โดยตรงจาก Cloud Console และไม่จำเป็นต้องมีสภาพแวดล้อมการพัฒนาในเครื่อง ดังนั้นคุณจึงทำตามบทแนะนำนี้ในระบบคลาวด์ได้อย่างสมบูรณ์ด้วยเว็บเบราว์เซอร์ Cloud Shell มีประโยชน์อย่างยิ่งหากคุณกำลังพัฒนาหรือวางแผนที่จะพัฒนาต่อด้วยผลิตภัณฑ์และ API ของ GCP สำหรับ Codelab นี้ Cloud Shell ได้ติดตั้ง Python ทั้ง 2 เวอร์ชันไว้ล่วงหน้าแล้ว
นอกจากนี้ Cloud Shell ยังติดตั้ง IPython ซึ่งเป็นตัวแปล Python แบบอินเทอร์แอกทีฟระดับสูงที่เราแนะนำ โดยเฉพาะอย่างยิ่งหากคุณเป็นส่วนหนึ่งของชุมชนวิทยาศาสตร์ข้อมูลหรือแมชชีนเลิร์นนิง หากคุณใช้ IPython จะเป็นตัวแปลเริ่มต้นสำหรับ Jupyter Notebooks รวมถึง Colab ซึ่งเป็น Jupyter Notebooks ที่โฮสต์โดย Google Research
IPython จะเลือกใช้ตัวแปล Python 3 ก่อน แต่จะกลับไปใช้ Python 2 หากไม่มี 3.x คุณเข้าถึง IPython ได้จาก Cloud Shell แต่ก็ติดตั้งในสภาพแวดล้อมการพัฒนาในเครื่องได้เช่นกัน ออกด้วย ^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 และตัวแก้ไขทรัพยากร Dependency) โดยจะมาพร้อมกับเวอร์ชัน 2.7.9 ขึ้นไปหรือ 3.4 ขึ้นไป หากคุณใช้ Python เวอร์ชันเก่ากว่า โปรดดูวิธีการติดตั้งในคำแนะนำนี้ คุณอาจต้องมีสิทธิ์เข้าถึงระดับ sudo หรือสิทธิ์เข้าถึงระดับผู้ดูแลระบบสูงสุด ทั้งนี้ขึ้นอยู่กับสิทธิ์ของคุณ แต่โดยทั่วไปแล้วจะไม่ใช่กรณีนี้ นอกจากนี้ คุณยังใช้ pip2 หรือ pip3 อย่างชัดเจนเพื่อเรียกใช้ pip สำหรับ Python เวอร์ชันที่เฉพาะเจาะจงได้ด้วย
ส่วนที่เหลือของโค้ดแล็บนี้จะถือว่าคุณใช้ Python 3 โดยจะมีการให้วิธีการเฉพาะสำหรับ Python 2 หากแตกต่างจาก 3.x อย่างมาก
*สร้างและใช้สภาพแวดล้อมเสมือน
ส่วนนี้ไม่บังคับและจำเป็นสำหรับผู้ที่ต้องใช้สภาพแวดล้อมเสมือนสำหรับ Codelab นี้เท่านั้น (ตามแถบด้านข้างคำเตือนด้านบน) หากมีเฉพาะ Python 3 ในคอมพิวเตอร์ คุณก็สามารถออกคำสั่งนี้เพื่อสร้าง virtualenv ที่ชื่อ my_env (คุณเลือกชื่ออื่นได้หากต้องการ)
virtualenv my_env
อย่างไรก็ตาม หากคุณมีทั้ง Python 2 และ 3 ในคอมพิวเตอร์ เราขอแนะนำให้ติดตั้ง Python 3 virtualenv ซึ่งทำได้ด้วย -p flag ดังนี้
virtualenv -p python3 my_env
เข้าสู่ virtualenv ที่สร้างขึ้นใหม่โดย "เปิดใช้งาน" ดังนี้
source my_env/bin/activate
ยืนยันว่าคุณอยู่ในสภาพแวดล้อมโดยสังเกตว่าตอนนี้พรอมต์เชลล์นำหน้าด้วยชื่อสภาพแวดล้อม เช่น
(my_env) $
ตอนนี้คุณควรจะpip installแพ็กเกจที่จำเป็น ดำเนินการโค้ดภายในสภาพแวดล้อมนี้ ฯลฯ ได้แล้ว อีกข้อดีคือหากคุณทำผิดพลาดจนเกิดสถานการณ์ที่การติดตั้ง Python เสียหาย ฯลฯ คุณสามารถลบสภาพแวดล้อมทั้งหมดนี้ได้โดยไม่ส่งผลกระทบต่อส่วนอื่นๆ ของระบบ
5. ติดตั้งไลบรารีของไคลเอ็นต์ Google APIs สำหรับ Python
Codelab นี้กำหนดให้ใช้ไลบรารีของไคลเอ็นต์ Google APIs สำหรับ Python ดังนั้นคุณอาจต้องติดตั้งอย่างง่าย หรืออาจไม่ต้องทำอะไรเลย
ก่อนหน้านี้เราขอแนะนำให้คุณพิจารณาใช้ 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 แล้ว
******************************************************************************* 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. *******************************************************************************
เมื่อเรียกใช้คำสั่ง "test" การนำเข้าได้สำเร็จ (ไม่มีข้อผิดพลาด/เอาต์พุต) คุณก็พร้อมที่จะเริ่มพูดคุยกับ Google APIs แล้ว
สรุป
เนื่องจากเป็น Codelab เบื้องต้น เราจึงถือว่าคุณยังไม่เคยใช้ Google และ Google Workspace API หากคุณมีประสบการณ์ในการสร้างโปรเจ็กต์และการสร้างการให้สิทธิ์ผู้ใช้ "รหัสไคลเอ็นต์ OAuth" อยู่แล้ว หากเป็นเช่นนั้น ให้สร้างหรือนำโปรเจ็กต์ที่มีอยู่มาใช้ซ้ำ สร้างหรือนำรหัสไคลเอ็นต์ OAuth ที่มีอยู่มาใช้ซ้ำ แล้วข้าม 2 โมดูลถัดไปและไปที่ "การแสดงแอปพลิเคชันไฟล์และโฟลเดอร์ในไดรฟ์" โดยตรง หรือข้ามไปที่ "การใช้งาน DevConsole ขั้นสูง" เพื่อตรวจสอบขั้นตอนเหล่านั้นโดยมีคำแนะนำน้อยลง
6. ระบุโปรเจ็กต์ใน Cloud Console
แอปพลิเคชันที่ใช้ Google API ต้องมีโปรเจ็กต์ ซึ่งจัดการได้ใน Google Cloud Developers Console หรือที่เรียกว่า "devconsole" ใน Codelab นี้ เราจะใช้เฉพาะ Google ไดรฟ์ API ดังนั้นเราจึงมีลิงก์มหัศจรรย์ (ด้านล่างในขั้นตอนที่ 1) ซึ่งมีลักษณะดังนี้
- นำคุณไปยัง DevConsole
- แนะนำขั้นตอนการสร้างโปรเจ็กต์ใหม่ (หรือเลือกโปรเจ็กต์ที่มีอยู่) และ
- เปิดใช้ Drive API โดยอัตโนมัติ
มาเริ่มกันเลย
- ไปที่ console.developers.google.com/start/api?id=drive แล้วเข้าสู่ระบบบัญชี Google
- หากยังไม่มีโปรเจ็กต์ คุณจะเห็นหน้าจอนี้เพื่อยอมรับข้อกำหนดในการให้บริการของ Google APIs
เมื่อคุณยอมรับข้อกำหนดแล้ว ระบบจะสร้างโปรเจ็กต์ใหม่ชื่อ "โปรเจ็กต์ของฉัน" และเปิดใช้ Drive API โดยอัตโนมัติ 3. แต่หากคุณสร้างโปรเจ็กต์ไว้แล้ว (อาจเป็น Codelab ก่อนหน้านี้) คุณจะเห็นหน้าจอนี้แทน
เมื่อคลิกเมนูแบบเลื่อนลงสร้างโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่มีอยู่หรือสร้างโปรเจ็กต์ใหม่
เมื่อเลือกแล้ว (โปรเจ็กต์ใหม่หรือที่มีอยู่) ระบบจะเปิดใช้ Drive API ให้คุณโดยอัตโนมัติ 4. คุณจะทราบว่าเปิดใช้ Drive API แล้วเมื่อได้รับการยืนยันนี้
5. คลิกไปที่ข้อมูลเข้าสู่ระบบเพื่อไปยังขั้นตอนถัดไป
7. *ให้สิทธิ์คำขอ API (การให้สิทธิ์ผู้ใช้)
คุณข้ามส่วนนี้ได้หากสร้างข้อมูลเข้าสู่ระบบการให้สิทธิ์บัญชีผู้ใช้แล้วและคุ้นเคยกับกระบวนการนี้ ซึ่งแตกต่างจากการให้สิทธิ์บัญชีบริการที่มีเทคนิคแตกต่างกัน ดังนั้นโปรดดำเนินการต่อด้านล่าง
ข้อมูลเบื้องต้นเกี่ยวกับการให้สิทธิ์ (รวมถึงการตรวจสอบสิทธิ์บางส่วน)
หากต้องการส่งคำขอไปยัง API แอปพลิเคชันของคุณต้องมีการให้สิทธิ์ที่เหมาะสม การตรวจสอบสิทธิ์ซึ่งเป็นคำที่คล้ายกันจะอธิบายข้อมูลเข้าสู่ระบบ โดยคุณจะตรวจสอบสิทธิ์ตัวเองเมื่อเข้าสู่ระบบบัญชี Google ด้วยข้อมูลเข้าสู่ระบบและรหัสผ่าน เมื่อตรวจสอบสิทธิ์แล้ว ขั้นตอนถัดไปคือการตรวจสอบว่าคุณหรือโค้ดของคุณมีสิทธิ์เข้าถึงข้อมูลหรือไม่ เช่น ไฟล์ Blob ใน Cloud Storage หรือไฟล์ส่วนตัวของผู้ใช้ใน Google ไดรฟ์
Google APIs รองรับการให้สิทธิ์หลายประเภท แต่ประเภทที่พบบ่อยที่สุดสำหรับผู้ใช้ Google Workspace API คือการให้สิทธิ์ผู้ใช้ เนื่องจากแอปพลิเคชันตัวอย่างใน Codelab นี้เข้าถึงข้อมูลที่เป็นของผู้ใช้ปลายทาง ผู้ใช้ปลายทางเหล่านั้นต้องให้สิทธิ์แก่แอปของคุณเพื่อเข้าถึงข้อมูลของตน ซึ่งหมายความว่าโค้ดของคุณต้องขอข้อมูลเข้าสู่ระบบ OAuth2 ของบัญชีผู้ใช้
หากต้องการรับข้อมูลเข้าสู่ระบบ OAuth2 สำหรับการให้สิทธิ์ผู้ใช้ ให้กลับไปที่ API Manager แล้วเลือกแท็บ "ข้อมูลเข้าสู่ระบบ" ในการนำทางด้านซ้าย
เมื่อไปที่นั่น คุณจะเห็นข้อมูลเข้าสู่ระบบทั้งหมดใน 3 ส่วนแยกกัน ดังนี้
รายการแรกคือคีย์ API รายการที่สองคือรหัสไคลเอ็นต์ OAuth 2.0 และรายการสุดท้ายคือบัญชีบริการ OAuth2 ซึ่งเราจะใช้รายการที่อยู่ตรงกลาง
การสร้างข้อมูลเข้าสู่ระบบ
จากหน้าข้อมูลเข้าสู่ระบบ ให้คลิกปุ่ม + สร้างข้อมูลเข้าสู่ระบบที่ด้านบน จากนั้นจะมีกล่องโต้ตอบให้เลือก "รหัสไคลเอ็นต์ OAuth"
ในหน้าจอถัดไป คุณจะดำเนินการได้ 2 อย่าง ได้แก่ การกำหนดค่า "หน้าจอขอความยินยอม" ในการให้สิทธิ์ของแอป และการเลือกประเภทแอปพลิเคชัน
หากยังไม่ได้ตั้งค่าหน้าจอขอความยินยอม คุณจะเห็นคำเตือนในคอนโซลและจะต้องดำเนินการในตอนนี้ (ข้ามขั้นตอนถัดไปนี้หากตั้งค่าหน้าจอขอความยินยอมแล้ว)
หน้าจอคำยินยอม OAuth
คลิก "กำหนดค่าหน้าจอขอความยินยอม" ซึ่งคุณเลือกแอป "ภายนอก" (หรือ "ภายใน" หากคุณเป็นลูกค้า Google Workspace [เดิมคือ "Google Workspace"])
โปรดทราบว่าสําหรับวัตถุประสงค์ของแบบฝึกหัดนี้ คุณจะเลือกข้อใดก็ได้เนื่องจากคุณไม่ได้เผยแพร่ตัวอย่างโค้ดแล็บ ผู้ใช้ส่วนใหญ่จะเลือก "ภายนอก" เพื่อไปยังหน้าจอที่ซับซ้อนกว่า แต่คุณเพียงแค่ต้องกรอกช่อง "ชื่อแอปพลิเคชัน" ที่ด้านบน
สิ่งเดียวที่คุณต้องมีในตอนนี้คือชื่อแอปพลิเคชัน ดังนั้นให้เลือกชื่อที่สื่อถึงโค้ดแล็บที่คุณกำลังทำ แล้วคลิกบันทึก
การสร้างรหัสไคลเอ็นต์ OAuth (การให้สิทธิ์บัญชีผู้ใช้)
ตอนนี้กลับไปที่แท็บข้อมูลเข้าสู่ระบบเพื่อสร้างรหัสไคลเอ็นต์ OAuth2 ที่นี่คุณจะเห็นรหัสไคลเอ็นต์ OAuth ต่างๆ ที่สร้างได้
เรากำลังพัฒนาเครื่องมือบรรทัดคำสั่งซึ่งเป็นอื่นๆ ดังนั้นให้เลือกตัวเลือกนั้น แล้วคลิกปุ่มสร้าง เลือกชื่อรหัสไคลเอ็นต์ที่แสดงถึงแอปที่คุณสร้าง หรือใช้ชื่อเริ่มต้น ซึ่งโดยปกติคือ "ไคลเอ็นต์อื่นๆ N"
การบันทึกข้อมูลเข้าสู่ระบบ
- กล่องโต้ตอบที่มีข้อมูลเข้าสู่ระบบใหม่จะปรากฏขึ้น ให้คลิกตกลงเพื่อปิด
- กลับไปที่หน้าข้อมูลเข้าสู่ระบบ เลื่อนลงไปที่ส่วน "รหัสไคลเอ็นต์ OAuth2" แล้วค้นหาและคลิกไอคอนดาวน์โหลด
ที่ด้านขวาล่างของรหัสไคลเอ็นต์ที่สร้างขึ้นใหม่
- ซึ่งจะเปิดกล่องโต้ตอบเพื่อบันทึกไฟล์ชื่อ
client_secret-LONG-HASH-STRING.apps.googleusercontent.com.jsonโดยอาจบันทึกลงในโฟลเดอร์ดาวน์โหลด เราขอแนะนำให้ย่อชื่อให้สั้นลงและง่ายขึ้น เช่นclient_secret.json(ซึ่งเป็นชื่อที่แอปตัวอย่างใช้) จากนั้นบันทึกชื่อดังกล่าวลงในไดเรกทอรี/โฟลเดอร์ที่คุณจะสร้างแอปตัวอย่างในโค้ดแล็บนี้
สรุป
เมื่อมีข้อมูลเข้าสู่ระบบแล้ว คุณก็พร้อมที่จะเข้าถึง Drive API จากแอป โดยอย่าลืมว่าวัตถุประสงค์ของรหัสไคลเอ็นต์ OAuth คือผู้ใช้ต้องให้สิทธิ์แอปของคุณในการเข้าถึงข้อมูลของตนใน Google ไดรฟ์
NOTE: รายละเอียดเพิ่มเติมเกี่ยวกับการสร้างโปรเจ็กต์ การเปิดใช้ API และการขอรับข้อมูลเข้าสู่ระบบด้วยตนเอง (โดยไม่ต้องใช้ "วิซาร์ด" ด้านบน) จะพร้อมใช้งานหลังจากที่ Codelab นี้สิ้นสุดลงเพื่อการศึกษาเพิ่มเติม
8. การแสดงแอปพลิเคชันไฟล์และโฟลเดอร์ในไดรฟ์
ไม่ว่าจะอยู่ในสภาพแวดล้อมการพัฒนาในเครื่องหรือใน Cloud Shell ให้สร้างไฟล์ Python ใหม่ชื่อ drive_list.py ในไดเรกทอรีเดียวกันกับที่ไฟล์ข้อมูลเข้าสู่ระบบ client_id.json อยู่ แล้วเพิ่มบรรทัดโค้ดด้านล่าง
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'])
โครงสร้างแอปพลิเคชัน
การสมัครนี้มี 3 ส่วนหลักๆ ดังนี้
- การนำเข้า Python เพื่อนำฟังก์ชันการทำงานของไลบรารีมาใช้
- การขอข้อมูลเข้าสู่ระบบของแอปพลิเคชัน
- ดึงข้อมูลชื่อไฟล์และโฟลเดอร์ รวมถึงประเภท MIME ใน Google ไดรฟ์ของผู้ใช้และแสดง
NOTE: คุณสามารถเจาะลึกโค้ดและดูคำอธิบายทีละบรรทัดได้หลังจาก Codelab นี้สิ้นสุดลงเพื่อศึกษาเพิ่มเติม
การเรียกใช้แอปพลิเคชัน
ตั้งชื่อไฟล์นี้เป็น drive_list.py เมื่อคุณเรียกใช้สคริปต์เป็นครั้งแรก สคริปต์จะไม่มีสิทธิ์เข้าถึงไฟล์ของผู้ใช้ในไดรฟ์ (ของคุณ) เอาต์พุตจะมีลักษณะดังนี้เมื่อหยุดการดำเนินการชั่วคราว
$ 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 ให้คุณ

ส่วนนี้คือที่ที่แอปพลิเคชันขอสิทธิ์จากผู้ใช้ที่โค้ดร้องขอ (ผ่านตัวแปร SCOPES) ในกรณีนี้คือความสามารถในการดูข้อมูลเมตาของไฟล์จาก Google ไดรฟ์ของผู้ใช้ ได้ ในโค้ด ขอบเขตสิทธิ์เหล่านี้จะปรากฏเป็น URI แต่จะได้รับการแปลเป็นภาษาที่ระบุโดยภาษาของคุณในหน้าต่างกล่องโต้ตอบของขั้นตอน OAuth2 ผู้ใช้ต้องให้สิทธิ์ที่ขออย่างชัดเจน มิเช่นนั้นส่วน "run flow" ของโค้ดจะส่งข้อยกเว้น และสคริปต์จะไม่ดำเนินการต่อ
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

ตัดและวางโค้ดนี้ลงในหน้าต่างเทอร์มินัล
สรุป
เมื่อผู้ใช้คลิกอนุญาตและ/หรือวางรหัสยืนยันลงในพรอมต์ แอปจะ (ทำงานต่อไป) ดังนั้นคุณจะเห็นเอาต์พุตที่ประกอบด้วยไฟล์/โฟลเดอร์ในไดรฟ์และประเภท 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 เอกสาร, ชีต, สไลด์, ปฏิทิน) และ Google API อื่นๆ (Maps, Analytics, YouTube ฯลฯ) แล้ว ขอแสดงความยินดีที่มาถึงตอนจบ
โค้ดที่แสดงใน Codelab นี้ยังพร้อมให้บริการในที่เก็บ GitHub ที่ github.com/googlecodelabs/gsuite-apis-intro ด้วย (เราตั้งใจที่จะให้ Codelab นี้ซิงค์กับที่เก็บ) พร้อมจะไปต่อหรือยัง ด้านล่างนี้คือแหล่งข้อมูลต่างๆ ที่คุณเข้าถึงได้เพื่อช่วยเจาะลึกเนื้อหาที่ครอบคลุมใน Codelab นี้ หรือหากต้องการขยายขอบเขตความคิดและสำรวจวิธีอื่นๆ ในการเข้าถึงเทคโนโลยีของ Google โดยใช้โปรแกรม
ดังที่ได้กล่าวไว้ก่อนหน้านี้ หากคุณไม่ใช่ผู้พัฒนา Python เป็นประจำ เราขอเชิญคุณทำตัวอย่าง Codelab นี้อีกครั้งในภาษาการพัฒนาที่คุณชื่นชอบ ไลบรารีของไคลเอ็นต์สำหรับภาษาที่รองรับมีให้บริการที่นี่
การศึกษาเพิ่มเติม
ตอนนี้คุณมีประสบการณ์การใช้งาน Drive API บ้างแล้ว ด้านล่างนี้คือแบบฝึกหัดที่แนะนำเพื่อพัฒนาทักษะของคุณต่อไป
- ไฟล์ ZIP: เขียนแอปพลิเคชันที่สำรองข้อมูลไฟล์เก็บถาวร ZIP หลายไฟล์ไปยังไดรฟ์ โดยคลายการบีบอัดไฟล์เหล่านั้นทันทีเพื่อให้ชื่อไฟล์ ZIP แต่ละไฟล์เป็นชื่อของโฟลเดอร์ที่ไฟล์เหล่านั้นจะไปอยู่ คะแนนพิเศษ: รองรับไฟล์ ZIP แบบเรียกซ้ำภายในไฟล์ ZIP อื่นๆ ที่มีโฟลเดอร์ไดรฟ์ฝังอยู่ภายในโฟลเดอร์อื่นๆ หากคุณยอมแพ้ โปรดดูแอปตัวอย่าง Node.js นี้
- อัลบั้มรูปภาพ: เขียนจุดเริ่มต้นของเครื่องมือสร้างอัลบั้มรูปภาพซึ่งอัปโหลดรูปภาพหลายรูปไปยัง Google ไดรฟ์ โดยจัดระเบียบรูปภาพเหล่านั้นไว้ในโฟลเดอร์แยกตามการประทับเวลาและตำแหน่งทางภูมิศาสตร์ คะแนนพิเศษ: ค้นหาไลบรารีการปรับแต่งรูปภาพแบบโอเพนซอร์ส แล้วต่อรูปภาพทั้งหมดในแต่ละโฟลเดอร์เพื่อแสดงเหตุการณ์ที่คุณอาจเคยพบเจอ (การเดินทาง อาหารค่ำ ฯลฯ)
- สำรวจ GCP: เขียนแอปที่เชื่อมต่อ Google Workspace กับ Google Cloud Platform (GCP) เข้าด้วยกัน เขียนเครื่องมือที่สำรองไฟล์รูปภาพจาก Google ไดรฟ์ไปยัง Google Cloud Storage (GCS) ซึ่งเป็นโซลูชัน "ที่เก็บไฟล์ในระบบคลาวด์" อีกโซลูชันหนึ่ง ไม่น่าเชื่อก็ต้องเชื่อว่าการใช้ GCS จะง่ายกว่าไดรฟ์เนื่องจากมีไลบรารีของไคลเอ็นต์ขั้นสูง
- วิเคราะห์และบันทึก: ขยายโซลูชันของคุณไปที่ #3 โดยวิเคราะห์รูปภาพแต่ละรูปที่สำรองข้อมูลไว้ด้วยการส่งไปยัง Google Cloud Vision API และรับ "ป้ายกำกับ" ยอดนิยม (3, 5, 10) ของสิ่งที่ API เห็นในรูปภาพเหล่านั้น สำหรับแต่ละรูปภาพ ให้เขียนแถวใน Google ชีตที่มีการวิเคราะห์จาก Cloud Vision รวมถึงตำแหน่งสำรองใน GCS หากยอมแพ้ โปรดดูCodelab Python นี้
10. แหล่งข้อมูลเพิ่มเติม
เอกสารประกอบ
- เอกสารประกอบของ Google Drive API (REST API และ SDK/API เนทีฟของ Android)
- เอกสารประกอบของ Google Workspace API อื่นๆ
- เอกสารประกอบอื่นๆ ของ Google API
- ไลบรารีของไคลเอ็นต์ Google APIs
- เอกสารประกอบ OAuth2
วิดีโอที่เกี่ยวข้องและวิดีโอทั่วไป
- การสร้างโปรเจ็กต์ Google API ใหม่ ( บล็อกโพสต์และวิดีโอ)
- การตรวจสอบโค้ด Boilerplate การให้สิทธิ์ Python ( วิดีโอ)
- การแสดงไฟล์ใน Google ไดรฟ์ ( วิดีโอ บล็อกโพสต์)
- คลังวิดีโอของ Google Drive API
- วิดีโอซีรีส์ Launchpad Online (รุ่นก่อนหน้าของ...)
- ชุดวิดีโอ Google Workspace Dev Show
ข่าวสารและข้อมูลอัปเดต
- บล็อกนักพัฒนาซอฟต์แวร์ของ Google Workspace
- นักพัฒนาซอฟต์แวร์ Google Workspace Twitter (@GSuiteDevs)
- จดหมายข่าวรายเดือนสำหรับนักพัฒนาซอฟต์แวร์ของ Google Workspace
Codelab อื่นๆ
ระดับเริ่มต้น
- [Apps Script] ข้อมูลเบื้องต้นเกี่ยวกับ Google Apps Script
ระดับกลาง
- [Apps Script] เครื่องมือบรรทัดคำสั่ง CLASP Apps Script
- [Apps Script] ส่วนเสริมของ Gmail
- [Apps Script] ส่วนเสริมของเอกสารและ Natural Language API ของ GCP
- [Apps Script] เฟรมเวิร์กบ็อตของ Hangouts Chat
- [REST APIs] เครื่องมือการรายงานที่กำหนดเอง (Sheets API)
- [REST API] เครื่องมือสร้างสไลด์ที่กำหนดเองสำหรับเครื่องมือวิเคราะห์ BigQuery ของใบอนุญาต Github (API ของสไลด์ + BigQuery)
ขั้นสูง
- [REST API] เวิร์กโฟลว์การประมวลผลรูปภาพในระบบคลาวด์ (Drive, Cloud Storage, Cloud Vision, Sheets API)
แอปอ้างอิง
- ตัวแปลง Markdown เป็น Google สไลด์ (REST API ของสไลด์)
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 อย่างหนึ่งคือการแยกการนำเข้าไลบรารีมาตรฐานและโมดูลของบุคคลที่สาม ซึ่งเป็นเหตุผลที่ต้องมีบรรทัดว่าง
- การนำเข้า 3 รายการถัดไปจะนำเข้าคลาสและฟังก์ชันที่จำเป็นจากไลบรารีของไคลเอ็นต์ Google APIs ซึ่งจำเป็นต่อการเขียนแอปนี้ โดยสรุปแล้ว การนำเข้าเหล่านี้จะทำหน้าที่ต่อไปนี้
googleapiclientมุ่งเน้นที่การเชื่อมต่อกับ Google APIshttplib2มีไคลเอ็นต์ 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:
- หากไม่มีข้อมูลเข้าสู่ระบบหรือข้อมูลหมดอายุแล้ว คุณต้องสร้างโฟลว์การให้สิทธิ์ใหม่ [ผ่าน
oauth2client.client.flow_from_clientsecrets()] จากรหัสไคลเอ็นต์และข้อมูลลับของ OAuth ในไฟล์client_id.jsonที่คุณดาวน์โหลด
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_id.json', SCOPES)
- เมื่อแอปมีโฟลว์แล้ว ก็ต้องดำเนินการเพื่อแสดงหน้าจอสิทธิ์ OAuth2 แก่ผู้ใช้ [ผ่าน
oauth2client.tools.run_flow()] ตามที่อธิบายและแสดงภาพไว้ข้างต้น
creds = tools.run_flow(flow, store)
- การคลิกอนุญาตหมายความว่าผู้ใช้ยินยอมให้แอปของคุณเข้าถึงข้อมูลเมตาของไฟล์ใน Google ไดรฟ์ และเซิร์ฟเวอร์ของ Google จะส่งคืนโทเค็นเพื่อเข้าถึง API โดยจะแสดงผลเป็น
credsและแคชไว้ในไฟล์storage.json - ตอนนี้แอปของคุณมีข้อมูลเข้าสู่ระบบที่ถูกต้องสำหรับการเรียก API แล้ว การเรียกใช้
googleapiclient.discovery.build()จะสร้างปลายทางบริการไปยัง API ที่คุณใช้ - หากต้องการใช้
build()ให้ส่งชื่อ API ('drive') และเวอร์ชันที่ต้องการ (ปัจจุบันคือ'v3') - พารามิเตอร์สุดท้ายคือไคลเอ็นต์ HTTP ที่ใช้สำหรับการเรียก API ที่เข้ารหัส
DRIVE = discovery.build('drive', 'v3', http=creds.authorize(Http()))
ดึงและแสดงไฟล์/โฟลเดอร์และ MIMEtype ของไดรฟ์ 100 รายการแรก)
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
- โค้ดบรรทัดถัดไปจะเรียกใช้เมธอด
list()ในคอลเล็กชันfiles()สำหรับ Drive API เพื่อสร้างคำขอ ซึ่งจะเรียกใช้ทันทีด้วยexecute()ระบบจะแสดงผล Pythondictซึ่งเราจะขอคีย์'files'เพื่อรับชื่อไฟล์และโฟลเดอร์ 100 รายการจาก Google ไดรฟ์ของผู้ใช้ (หรือน้อยกว่านั้นหากมีไฟล์น้อยกว่า) - ทำไมจึงเป็น 100 ซึ่งเป็นค่าเริ่มต้นจาก
DRIVE.files().list()หากต้องการเปลี่ยนตัวเลขนี้ เช่น ให้เป็น 10 ไฟล์หรือ 1,000 ไฟล์ ให้เพิ่มพารามิเตอร์pageSizeลงในคำขอ:DRIVE.files().list(pageSize=10)ดูตัวเลือกเพิ่มเติมได้ในเอกสารประกอบ - ส่วนสุดท้ายของสคริปต์จะวนซ้ำในแต่ละไฟล์และแสดงชื่อและประเภท MIME ของไฟล์
ตอนนี้คุณได้เขียนแอปพลิเคชันแรกที่ใช้ Google REST API แล้ว ขอแสดงความยินดีด้วย นอกเหนือจากการนำเข้าและรหัสการให้สิทธิ์แล้ว สคริปต์นี้มีโค้ดเพียงไม่กี่บรรทัด (ตามที่คุณเห็นด้านบน) Google API ส่วนใหญ่ทำงานในลักษณะที่คล้ายกัน และคุณจะต้องสร้างปลายทางบริการสำหรับแต่ละ API ที่ต้องการใช้เท่านั้น
การใช้ Google API มากกว่า 1 รายการในแอป
ได้ คุณใช้ API มากกว่า 1 รายการในแอปเดียวกันได้แน่นอน ต่อไปนี้คือโค้ด Python สำหรับแอปที่ใช้ไคลเอ็นต์ HTTP เดียวกันซ้ำและสร้างปลายทางบริการสำหรับ Google API 3 รายการ (ใช่ รวมถึง 3 SCOPES ที่แตกต่างกันด้วย)
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)
เราคิดว่าโค้ดนี้อาจเป็นส่วนหนึ่งของแอปที่สร้างชุดสไลด์หลายชุด (Slides API) โดยอิงตามข้อมูลสเปรดชีต (Sheets API) และใช้เทมเพลตสไลด์ที่คัดลอก (Drive API) สำหรับชุดสไลด์แต่ละชุดที่สร้างขึ้น แม้ว่าจะไม่มีแอปดังกล่าว แต่คุณควรจะสร้างแอปที่คล้ายกันได้โดยใช้ตัวอย่างที่มีอยู่ 2 รายการที่ทีม Google Workspace สร้างขึ้นเป็นบล็อกตัวต่อ ดังนี้
- การแทนที่ข้อความและรูปภาพในสไลด์ ( บล็อกโพสต์และวิดีโอ) - ใช้ Drive API เพื่อคัดลอกชุดเทมเพลตสไลด์ แล้วใช้ Slides API เพื่อเปลี่ยนตัวยึดตำแหน่งข้อความและรูปภาพ
- การสร้างสไลด์จากข้อมูลสเปรดชีต ( บล็อกโพสต์และวิดีโอ) - อ่านข้อมูลจากสเปรดชีต (Sheets API) และสร้างสไลด์ (Slides API) ตามข้อมูลนั้น
ความท้าทายของคุณคือการสร้างแอปนั้น
12. *การใช้งาน DevConsole ขั้นสูง
ในส่วนที่ไม่บังคับนี้ เราจะอธิบายวิธีสร้างโปรเจ็กต์ใน devconsole, เปิดใช้ API และรับข้อมูลเข้าสู่ระบบทั้งหมดโดยไม่ต้องใช้ตัวช่วยสร้างตามที่ระบุไว้ข้างต้นใน Codelab สำหรับผู้ใช้ระดับกลางที่คุ้นเคยกับการดำเนินการด้วยตนเองหรือต้องการเรียนรู้วิธีดำเนินการ
ระบุโปรเจ็กต์ใน Cloud Console
ทุกครั้งที่คุณเขียนแอปพลิเคชันโดยใช้ Google API คุณจะต้องมีโปรเจ็กต์ คุณจะนำโปรเจ็กต์ที่มีอยู่มาใช้ซ้ำหรือสร้างโปรเจ็กต์ใหม่ก็ได้ ซึ่งจะเกิดขึ้นใน Cloud Console Codelab บางรายการมีลิงก์วิเศษ (เช่น วิซาร์ดการตั้งค่า) ที่ช่วยให้คุณเริ่มต้นใช้งานได้อย่างรวดเร็วโดยข้ามขั้นตอนที่จำเป็นหลายขั้นตอน แต่บางรายการก็ไม่ได้มีให้ ดังนั้นคำแนะนำเหล่านี้จึงมีไว้เพื่อเป็นคำแนะนำทั่วไปเกี่ยวกับวิธีสร้างโปรเจ็กต์
คุณสร้างโปรเจ็กต์ได้จากหน้าจอส่วนใหญ่ในคอนโซล Cloud ตราบใดที่คุณได้เข้าสู่ระบบด้วยข้อมูลเข้าสู่ระบบของ Google และเห็นเมนูแบบเลื่อนลงของโปรเจ็กต์ที่ด้านบนของคอนโซล โปรดทราบว่าภาพหน้าจอส่วนใหญ่ที่นี่มาจาก API Manager หรือที่เรียกว่า Developers Console (เข้าถึงได้ง่ายๆ โดยคลิก "API Manager" ในแถบนำทางด้านซ้าย หรือชี้เบราว์เซอร์ไปที่ console.developers.google.com โดยตรง
- หากยังไม่มีโปรเจ็กต์ ระบบอาจนำคุณไปยัง...
- หน้าแดชบอร์ด:
- หน้าคลัง:
- หรือหน้าว่างเปล่า:
หากคุณพบกรณีที่ 3 นี้ ให้รีเฟรชเบราว์เซอร์เพื่อไปยังหน้าคลัง
- ไม่ว่าคุณจะอยู่ในหน้าแดชบอร์ดหรือคลัง ให้คลิกตัวเลือกโปรเจ็กต์ที่ด้านบนของหน้า
- จากนั้นคุณจะเห็นกล่องโต้ตอบตัวเลือก คลิก "+" ทางด้านขวาเพื่อสร้างโปรเจ็กต์ใหม่
- หลังจากคลิก "+" หน้าโปรเจ็กต์ใหม่จะปรากฏขึ้น บัญชีผู้ใช้ทั่วไปทั้งหมดจะได้รับ 12 โปรเจ็กต์โดยค่าเริ่มต้น ก่อนสร้างโปรเจ็กต์แรก คุณจะต้องยอมรับข้อกำหนดในการให้บริการของ Google APIs โดยทำดังนี้
หลังจากดำเนินการนี้แล้ว คำถามเกี่ยวกับการชักชวนทางอีเมลและข้อกำหนดในการให้บริการจะไม่ปรากฏเมื่อสร้างโปรเจ็กต์ในอนาคต
5. หากเคยสร้างโปรเจ็กต์อย่างน้อย 1 รายการในอดีต หลังจากเข้าสู่ระบบแล้ว ระบบจะนำคุณไปยังแดชบอร์ดของโปรเจ็กต์ล่าสุดที่คุณทำ จากนั้นสร้างโปรเจ็กต์ใหม่เช่นเดียวกับการเลือกเลือกโปรเจ็กต์ > + 6. เมื่อสร้างโปรเจ็กต์ใหม่แล้ว คุณจะกลับไปที่หน้าแดชบอร์ด
ตอนนี้คุณได้สร้างโปรเจ็กต์เรียบร้อยแล้ว และพร้อมที่จะดำเนินการต่อโดยเลือก API ที่ต้องการใช้สำหรับโปรเจ็กต์
เปิดใช้ Google APIs
คุณต้องเปิดใช้ Google API ก่อนจึงจะเริ่มใช้งานได้ ตัวอย่างด้านล่างแสดงสิ่งที่คุณต้องทำเพื่อเปิดใช้ Cloud Vision API ในโค้ดแล็บนี้ คุณอาจใช้ API อย่างน้อย 1 รายการ และควรทำตามขั้นตอนที่คล้ายกันเพื่อเปิดใช้ API เหล่านั้นก่อนใช้งาน
จาก Cloud Shell
คุณเปิดใช้ API ได้โดยใช้คำสั่งต่อไปนี้ใน Cloud Shell
gcloud services enable vision.googleapis.com
จาก Cloud Console
นอกจากนี้ คุณยังเปิดใช้ Vision API ใน API Manager ได้ด้วย จาก Cloud Console ให้ไปที่ API Manager แล้วเลือก "คลัง"
ในแถบค้นหา ให้เริ่มพิมพ์ "Vision" แล้วเลือก Vision API เมื่อปรากฏขึ้น โดยอาจมีลักษณะดังนี้ขณะที่คุณพิมพ์
เลือก Cloud Vision API เพื่อรับกล่องโต้ตอบที่คุณเห็นด้านล่าง จากนั้นคลิกปุ่ม "เปิดใช้"
ค่าใช้จ่าย
แม้ว่า Google API หลายรายการจะใช้งานได้โดยไม่มีค่าธรรมเนียม แต่การใช้ GCP (ผลิตภัณฑ์และ API) จะไม่ฟรี เมื่อเปิดใช้ Vision API (ตามที่อธิบายไว้ข้างต้น) ระบบอาจขอให้คุณระบุบัญชีสำหรับการเรียกเก็บเงินที่ใช้งานอยู่ ผู้ใช้ควรอ้างอิงข้อมูลราคาของ Vision API ก่อนเปิดใช้ โปรดทราบว่าผลิตภัณฑ์ Google Cloud Platform (GCP) บางอย่างมีระดับ"ใช้งานฟรีเสมอ" ซึ่งคุณต้องใช้เกินจึงจะมีการเรียกเก็บเงิน เพื่อวัตถุประสงค์ของโค้ดแล็บ การเรียกใช้ Vision API แต่ละครั้งจะนับรวมในระดับฟรีดังกล่าว และตราบใดที่คุณยังคงอยู่ภายในขีดจำกัดโดยรวม (ภายในแต่ละเดือน) คุณก็จะไม่ถูกเรียกเก็บเงิน
Google API บางรายการ เช่น Google Workspace มีการใช้งานที่ครอบคลุมโดยการสมัครใช้บริการรายเดือน ดังนั้นจึงไม่มีการเรียกเก็บเงินโดยตรงสำหรับการใช้ API ของ Gmail, Google ไดรฟ์, ปฏิทิน, เอกสาร, ชีต และสไลด์ เป็นต้น ผลิตภัณฑ์ต่างๆ ของ Google จะมีการเรียกเก็บเงินที่แตกต่างกัน ดังนั้นโปรดดูข้อมูลดังกล่าวในเอกสารประกอบของ API
สรุป
ในโค้ดแล็บนี้ คุณจะต้องเปิดใช้ Google ไดรฟ์ API เท่านั้น ดังนั้นให้ทำตามวิธีการด้านบนและค้นหา "ไดรฟ์" ดำเนินการต่อเมื่อเปิดใช้แล้ว
ให้สิทธิ์คำขอ API (การให้สิทธิ์ผู้ใช้)
ข้อมูลเบื้องต้นเกี่ยวกับการให้สิทธิ์ (รวมถึงการตรวจสอบสิทธิ์บางส่วน)
หากต้องการส่งคำขอไปยัง API แอปพลิเคชันของคุณต้องมีการให้สิทธิ์ที่เหมาะสม การตรวจสอบสิทธิ์ซึ่งเป็นคำที่คล้ายกันจะอธิบายข้อมูลเข้าสู่ระบบ โดยคุณจะตรวจสอบสิทธิ์ตัวเองเมื่อเข้าสู่ระบบบัญชี Google ด้วยข้อมูลเข้าสู่ระบบและรหัสผ่าน เมื่อตรวจสอบสิทธิ์แล้ว ขั้นตอนถัดไปคือการตรวจสอบว่าคุณหรือโค้ดของคุณมีสิทธิ์เข้าถึงข้อมูลหรือไม่ เช่น ไฟล์ Blob ใน Cloud Storage หรือไฟล์ส่วนตัวของผู้ใช้ใน Google ไดรฟ์
Google APIs รองรับการให้สิทธิ์หลายประเภท แต่ประเภทที่พบบ่อยที่สุดสำหรับผู้ใช้ Google Workspace API คือการให้สิทธิ์ผู้ใช้ เนื่องจากแอปพลิเคชันตัวอย่างใน Codelab นี้เข้าถึงข้อมูลที่เป็นของผู้ใช้ปลายทาง ผู้ใช้ปลายทางเหล่านั้นต้องให้สิทธิ์แก่แอปของคุณเพื่อเข้าถึงข้อมูลของตน ซึ่งหมายความว่าโค้ดของคุณต้องขอข้อมูลเข้าสู่ระบบ OAuth2 ของบัญชีผู้ใช้
หากต้องการรับข้อมูลเข้าสู่ระบบ OAuth2 สำหรับการให้สิทธิ์ผู้ใช้ ให้กลับไปที่ API Manager แล้วเลือกแท็บ "ข้อมูลเข้าสู่ระบบ" ในการนำทางด้านซ้าย
เมื่อไปที่นั่น คุณจะเห็นข้อมูลเข้าสู่ระบบทั้งหมดใน 3 ส่วนแยกกัน ดังนี้
รายการแรกคือคีย์ API รายการที่สองคือรหัสไคลเอ็นต์ OAuth 2.0 และรายการสุดท้ายคือบัญชีบริการ OAuth2 ซึ่งเราจะใช้รายการที่อยู่ตรงกลาง
การสร้างข้อมูลเข้าสู่ระบบ
จากหน้าข้อมูลเข้าสู่ระบบ ให้คลิกปุ่ม + สร้างข้อมูลเข้าสู่ระบบที่ด้านบน จากนั้นจะมีกล่องโต้ตอบให้เลือก "รหัสไคลเอ็นต์ OAuth"
ในหน้าจอถัดไป คุณจะดำเนินการได้ 2 อย่าง ได้แก่ การกำหนดค่า "หน้าจอขอความยินยอม" ในการให้สิทธิ์ของแอป และการเลือกประเภทแอปพลิเคชัน
หากยังไม่ได้ตั้งค่าหน้าจอขอความยินยอม คุณจะเห็นคำเตือนในคอนโซลและจะต้องดำเนินการในตอนนี้ (ข้ามขั้นตอนถัดไปนี้หากตั้งค่าหน้าจอขอความยินยอมแล้ว)
หน้าจอคำยินยอม OAuth
คลิก "กำหนดค่าหน้าจอขอความยินยอม" ที่คุณเลือกแอป "ภายนอก" (หรือ "ภายใน" หากคุณเป็นลูกค้า Google Workspace)
โปรดทราบว่าสําหรับวัตถุประสงค์ของแบบฝึกหัดนี้ คุณจะเลือกข้อใดก็ได้เนื่องจากคุณไม่ได้เผยแพร่ตัวอย่างโค้ดแล็บ ผู้ใช้ส่วนใหญ่จะเลือก "ภายนอก" เพื่อไปยังหน้าจอที่ซับซ้อนกว่า แต่คุณเพียงแค่ต้องกรอกช่อง "ชื่อแอปพลิเคชัน" ที่ด้านบน
สิ่งเดียวที่คุณต้องมีในตอนนี้คือชื่อแอปพลิเคชัน ดังนั้นให้เลือกชื่อที่สื่อถึงโค้ดแล็บที่คุณกำลังทำ แล้วคลิกบันทึก
การสร้างรหัสไคลเอ็นต์ OAuth (การให้สิทธิ์บัญชีผู้ใช้)
ตอนนี้กลับไปที่แท็บข้อมูลเข้าสู่ระบบเพื่อสร้างรหัสไคลเอ็นต์ OAuth2 ที่นี่คุณจะเห็นรหัสไคลเอ็นต์ OAuth ต่างๆ ที่สร้างได้
เรากำลังพัฒนาเครื่องมือบรรทัดคำสั่งซึ่งเป็นอื่นๆ ดังนั้นให้เลือกตัวเลือกนั้น แล้วคลิกปุ่มสร้าง เลือกชื่อรหัสไคลเอ็นต์ที่แสดงถึงแอปที่คุณสร้าง หรือใช้ชื่อเริ่มต้น ซึ่งโดยปกติคือ "ไคลเอ็นต์อื่นๆ N"
การบันทึกข้อมูลเข้าสู่ระบบ
- กล่องโต้ตอบที่มีข้อมูลเข้าสู่ระบบใหม่จะปรากฏขึ้น ให้คลิกตกลงเพื่อปิด
- กลับไปที่หน้าข้อมูลเข้าสู่ระบบ เลื่อนลงไปที่ส่วน "รหัสไคลเอ็นต์ OAuth2" แล้วค้นหาและคลิกไอคอนดาวน์โหลด
ที่ด้านขวาล่างของรหัสไคลเอ็นต์ที่สร้างขึ้นใหม่
- ซึ่งจะเปิดกล่องโต้ตอบเพื่อบันทึกไฟล์ชื่อ
client_secret-LONG-HASH-STRING.apps.googleusercontent.com.jsonโดยอาจบันทึกลงในโฟลเดอร์ดาวน์โหลด เราขอแนะนำให้ย่อชื่อให้สั้นลงและง่ายขึ้น เช่นclient_secret.json(ซึ่งเป็นชื่อที่แอปตัวอย่างใช้) จากนั้นบันทึกชื่อดังกล่าวลงในไดเรกทอรี/โฟลเดอร์ที่คุณจะสร้างแอปตัวอย่างในโค้ดแล็บนี้