1. การใช้ Google Workspace API
Codelab นี้จะแนะนำให้คุณใช้ RESTful API แบบ HTTP ของ Google Workspace (เดิมคือ G Suite) ตัวอย่างนี้จะทำใน Python เพื่อความกระชับและความพร้อมในการใช้งาน แต่คุณสามารถเลือกใช้ภาษาสำหรับการพัฒนาที่คุณชื่นชอบได้ด้วย คุณจะได้พบกับหัวข้อแนะนำ เช่น วิธีใช้ Play Console เพื่อสร้าง/จัดการโปรเจ็กต์ การรับข้อมูลรับรองการให้สิทธิ์ และการติดตั้งไลบรารีของไคลเอ็นต์ API เมื่อได้รับการดูแลอย่างเป็นทางการแล้ว คุณจะต้องเขียนแอปเพื่อแสดงไฟล์ 100 ไฟล์แรก โฟลเดอร์ใน Google ไดรฟ์ของคุณโดยใช้ API
สิ่งที่คุณจะได้เรียนรู้
- สร้างโปรเจ็กต์โดยใช้ Google/Cloud Developers Console
- รับและ ใช้ข้อมูลเข้าสู่ระบบแอปพลิเคชัน OAuth2 ในแอปของคุณ
- ดูข้อมูลเกี่ยวกับการใช้ไลบรารีไคลเอ็นต์ Google APIs
- เขียนแอปพลิเคชันโดยใช้ Google และ Google Workspace API
- รับข้อมูลไฟล์และโฟลเดอร์ด้วย Google Drive API
สิ่งที่ต้องมี
- การเข้าถึงอินเทอร์เน็ตและเว็บเบราว์เซอร์
- บัญชี Google (บัญชี Google Workspace อาจต้องได้รับการอนุมัติจากผู้ดูแลระบบ)
- คุ้นเคยกับระบบที่รองรับ POSIX เช่น Linux และ Mac OS X
- ความสามารถในการสร้างไฟล์ต้นฉบับด้วยตัวแก้ไขโค้ดหรือคำสั่ง Shell
- ทักษะพื้นฐานด้าน Python (2 หรือ 3) แต่คุณสามารถใช้ภาษาใดก็ได้ที่รองรับ
- ไฟล์และ/หรือโฟลเดอร์บางรายการใน Google ไดรฟ์
2. แบบสำรวจ
คุณจะใช้บทแนะนำเกี่ยวกับ Codelab อย่างไร
คุณจะให้คะแนนประสบการณ์การใช้งานเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Google Workspace และ API
3. ภาพรวม
ใน Codelab นี้ คุณจะได้เรียนรู้วิธีการต่อไปนี้
- ดาวน์โหลดไลบรารีของไคลเอ็นต์ Google APIs สำหรับ Python
- สร้างโปรเจ็กต์ใหม่ใน Google/Cloud Developers Console
- รับข้อมูลเข้าสู่ระบบที่จำเป็นสำหรับแอป
- ใช้ข้อมูลเข้าสู่ระบบเหล่านี้เพื่อเข้าถึง Google Drive API
หากไม่ต้องการใช้ Python คุณสามารถใช้ Codelab ในเครื่องมือการพัฒนาที่ชอบได้ (ดูไลบรารีของไคลเอ็นต์ของภาษาที่รองรับได้ที่นี่) และดูตัวอย่าง Python เป็น Pseudocode (ปฏิบัติการ)
4. ยืนยันสภาพแวดล้อม Python
Codelab นี้กำหนดให้คุณใช้ภาษา Python (แม้ว่าไลบรารีของไคลเอ็นต์ Google APIs จะรองรับหลายภาษา ดังนั้น คุณสามารถสร้างสิ่งที่เทียบเท่าในเครื่องมือการพัฒนาที่คุณชื่นชอบ และเพียงใช้ Python เป็น Pseudocode) โดย Codelab นี้รองรับ Python 2 และ 3 โดยเฉพาะ แต่เราขอแนะนำให้เปลี่ยนไปใช้ 3.x โดยเร็วที่สุด
Cloud Shell เป็นเครื่องมืออำนวยความสะดวกสำหรับผู้ใช้โดยตรงจาก Cloud Console และไม่จำเป็นต้องใช้สภาพแวดล้อมการพัฒนาในเครื่อง คุณจึงทำบทแนะนำนี้ได้ในระบบคลาวด์โดยสมบูรณ์ด้วยเว็บเบราว์เซอร์ Cloud Shell มีประโยชน์อย่างยิ่งหากคุณพัฒนาหรือวางแผนที่จะพัฒนาต่อไปด้วยผลิตภัณฑ์ของ GCP และ API กล่าวอย่างเจาะจงก็คือ Cloud Shell ได้ติดตั้ง Python ทั้ง 2 เวอร์ชันไว้ล่วงหน้าแล้ว
Cloud Shell ยังติดตั้ง IPython ไว้ด้วย... โดยเป็นล่าม Python เชิงโต้ตอบระดับสูงที่เราแนะนำ โดยเฉพาะอย่างยิ่งหากคุณเป็นส่วนหนึ่งของชุมชนวิทยาศาสตร์ข้อมูลหรือแมชชีนเลิร์นนิง หากใช้ IPython จะเป็นล่ามเริ่มต้นสำหรับสมุดบันทึก Jupyter รวมถึง 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 บางเวอร์ชันได้ด้วย
ส่วนที่เหลือของ Codelab จะถือว่าคุณกำลังใช้ 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
ยืนยันว่าคุณอยู่ในสภาพแวดล้อมโดยสังเกตข้อความแจ้งของ Shell ที่มีชื่อสภาพแวดล้อมนำหน้าแล้ว เช่น
(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. *******************************************************************************
เมื่อคุณสามารถเรียกใช้ "การทดสอบ" การนำเข้านั้น คำสั่งสำเร็จแล้ว (ไม่มีข้อผิดพลาด/เอาต์พุต) คุณพร้อมที่จะเริ่มพูดคุยกับ Google APIs แล้ว
สรุป
เนื่องจากโปรแกรมนี้เป็น Codelab เบื้องต้น เราจึงจะถือว่าคุณยังไม่เคยใช้ Google และ Google Workspace API มาก่อน หากคุณมีประสบการณ์ในการสร้างโปรเจ็กต์และสร้างการให้สิทธิ์ผู้ใช้ "รหัสไคลเอ็นต์ OAuth" อยู่แล้ว ในกรณีนี้ ให้สร้างหรือนําโปรเจ็กต์ที่มีอยู่มาใช้ใหม่ สร้างหรือใช้รหัสไคลเอ็นต์ OAuth ที่มีอยู่ซ้ำ แล้วข้าม 2 โมดูลถัดไปและไปที่ "การแสดงไฟล์ในไดรฟ์และ โฟลเดอร์แอปพลิเคชัน" หรือข้ามไปที่ "การใช้งานคอนโซลของนักพัฒนาซอฟต์แวร์ขั้นสูง" เพื่อดูขั้นตอนเหล่านั้นโดยมีคำแนะนำน้อยลง
6. ระบุโปรเจ็กต์ใน Cloud Console
แอปพลิเคชันที่ใช้ Google APIs ต้องการโปรเจ็กต์ ซึ่งสามารถจัดการได้ใน Google Cloud Developers Console หรือเรียกง่ายๆ ว่า "devconsole" ใน Codelab นี้ เราจะใช้เฉพาะ Google Drive API ดังนั้นเรามีลิงก์วิเศษ (ด้านล่างในขั้นตอนที่ 1) ที่:
- นำคุณไปยัง devconsole
- แนะนำขั้นตอนการสร้างโปรเจ็กต์ใหม่ (หรือเลือกโปรเจ็กต์ที่มีอยู่) และ
- เปิดใช้ Drive API โดยอัตโนมัติ
เริ่มลงมือเลย
- ไปที่ console.developers.google.com/start/api?id=drive และเข้าสู่ระบบบัญชี Google
- หากยังไม่มีโปรเจ็กต์ คุณจะเห็นหน้าจอนี้เพื่อยอมรับข้อกำหนดในการให้บริการของ Google APIs
เมื่อคุณยอมรับข้อกำหนด โปรเจ็กต์ใหม่ที่ชื่อว่า "โปรเจ็กต์ของฉัน" ระบบจะสร้าง และ Drive API จะเปิดใช้โดยอัตโนมัติ 3. แต่หากคุณสร้างโปรเจ็กต์แล้ว (หรืออาจเป็น Codelab ก่อนหน้า) คุณจะเห็นหน้าจอนี้แทน:
เมื่อคลิกเมนูแบบเลื่อนลงสร้างโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่มีอยู่หรือสร้างโปรเจ็กต์ใหม่จริงๆ
เมื่อเลือกได้แล้ว (โปรเจ็กต์ใหม่หรือโปรเจ็กต์ที่มีอยู่) ระบบจะเปิดใช้ API ไดรฟ์ให้คุณโดยอัตโนมัติ 4. คุณจะทราบว่าได้เปิดใช้ Drive API ด้วยการยืนยันนี้
5. คลิกไปที่ข้อมูลเข้าสู่ระบบเพื่อไปยังขั้นตอนถัดไป
7. *ให้สิทธิ์คำขอ API (การให้สิทธิ์ผู้ใช้)
คุณสามารถข้ามส่วนนี้ได้หากได้สร้างข้อมูลเข้าสู่ระบบการให้สิทธิ์บัญชีผู้ใช้ไว้แล้วและคุ้นเคยกับกระบวนการนี้ ซึ่งแตกต่างจากการให้สิทธิ์บัญชีบริการที่มีเทคนิคที่แตกต่างกัน ดังนั้นโปรดดำเนินการต่อด้านล่าง
ข้อมูลเบื้องต้นเกี่ยวกับการให้สิทธิ์ (รวมถึงการตรวจสอบสิทธิ์บางอย่าง)
ในการส่งคำขอไปยัง API แอปพลิเคชันของคุณต้องมีการให้สิทธิ์ที่เหมาะสม การตรวจสอบสิทธิ์ มีคำอื่นๆ ที่คล้ายกัน อธิบายเกี่ยวกับข้อมูลเข้าสู่ระบบ โดยตรวจสอบสิทธิ์ของตนเองเมื่อเข้าสู่ระบบบัญชี Google ด้วยข้อมูลเข้าสู่ระบบ รหัสผ่าน เมื่อตรวจสอบสิทธิ์แล้ว ขั้นตอนถัดไปคือคุณโค้ดของคุณจะได้รับสิทธิ์ในการเข้าถึงข้อมูล เช่น ไฟล์ BLOB บน Cloud Storage หรือไฟล์ส่วนตัวของผู้ใช้ใน Google ไดรฟ์หรือไม่
Google APIs รองรับการให้สิทธิ์หลายประเภท แต่ประเภทที่พบบ่อยที่สุดสำหรับผู้ใช้ Google Workspace API คือการให้สิทธิ์ผู้ใช้ เนื่องจากแอปพลิเคชันตัวอย่างใน Codelab นี้จะเข้าถึงข้อมูลที่เป็นของผู้ใช้ปลายทาง ผู้ใช้ปลายทางเหล่านั้นต้องให้สิทธิ์แอปของคุณในการเข้าถึงข้อมูลของตน ซึ่งหมายความว่าโค้ดของคุณจะต้องรับข้อมูลเข้าสู่ระบบ OAuth2 ของบัญชีผู้ใช้
หากต้องการรับข้อมูลเข้าสู่ระบบ OAuth2 สำหรับการให้สิทธิ์ผู้ใช้ ให้กลับไปที่ตัวจัดการ API แล้วเลือก "ข้อมูลเข้าสู่ระบบ" แท็บที่การนำทางด้านซ้าย:
เมื่อไปถึงเว็บไซต์ คุณจะเห็นข้อมูลเข้าสู่ระบบทั้งหมดแบ่งออกเป็น 3 ส่วน ดังนี้
อันแรกคือคีย์ API รหัสไคลเอ็นต์ OAuth 2.0 รายการที่ 2 และบัญชีบริการ OAuth2 อันสุดท้าย ซึ่งเรากำลังใช้รหัสที่อยู่ตรงกลาง
กำลังสร้างข้อมูลเข้าสู่ระบบ
จากหน้าข้อมูลเข้าสู่ระบบ ให้คลิกปุ่ม + สร้างข้อมูลเข้าสู่ระบบ ที่ด้านบนซึ่งจะแสดงกล่องโต้ตอบให้คุณเลือก "รหัสไคลเอ็นต์ OAuth:"
ในหน้าจอถัดไป คุณจะมี 2 การดำเนินการ ได้แก่ การกำหนดค่า "หน้าจอคำยินยอม" สำหรับการให้สิทธิ์ของแอป และเลือกประเภทแอปพลิเคชัน
หากยังไม่ได้ตั้งค่าหน้าจอขอความยินยอม คุณจะเห็นคำเตือนในคอนโซลและต้องดำเนินการทันที (ข้ามขั้นตอนนี้หากตั้งค่าหน้าจอคำยินยอมไว้แล้ว)
หน้าจอคำยินยอม OAuth
คลิก "กำหนดค่าหน้าจอคำยินยอม" ที่คุณเลือกแท็บ "ภายนอก" แอป (หรือ "ภายใน" หากคุณเป็นลูกค้า Google Workspace [เดิมคือ "Google Workspace") ให้ทำดังนี้
โปรดทราบว่าเพื่อให้เป็นไปตามจุดประสงค์ของแบบฝึกหัดนี้ คุณจะเลือกใดก็ได้ เพราะคุณไม่ได้เผยแพร่ตัวอย่าง Codelab ผู้ใช้ส่วนใหญ่จะเลือก "ภายนอก" เพื่อไปยังหน้าจอที่ซับซ้อนมากขึ้น แต่คุณต้องกรอก "ชื่อแอปพลิเคชัน" เท่านั้น ที่ด้านบน
สิ่งเดียวที่คุณต้องมีในขณะนี้มีเพียงชื่อแอปพลิเคชัน ดังนั้นโปรดเลือกบุคคลที่สอดคล้องกับ Codelab ที่คุณกำลังทำ แล้วคลิกบันทึก
กำลังสร้างรหัสไคลเอ็นต์ OAuth (การตรวจสอบสิทธิ์บัญชีผู้ใช้)
จากนั้นกลับไปที่แท็บข้อมูลเข้าสู่ระบบเพื่อสร้างรหัสไคลเอ็นต์ OAuth2 ในส่วนนี้ คุณจะเห็นรหัสไคลเอ็นต์ OAuth แบบต่างๆ ที่คุณสามารถสร้างได้
เรากำลังพัฒนาเครื่องมือบรรทัดคำสั่ง ซึ่งก็คืออื่นๆ ดังนั้นโปรดเลือกเครื่องมือดังกล่าว แล้วคลิกปุ่มสร้าง เลือกชื่อรหัสไคลเอ็นต์ที่แสดงถึงแอปที่คุณกำลังสร้าง หรือใช้ชื่อเริ่มต้นซึ่งมักเป็น "ไคลเอ็นต์อื่น N"
กำลังบันทึกข้อมูลเข้าสู่ระบบ
- กล่องโต้ตอบที่มีข้อมูลเข้าสู่ระบบใหม่จะปรากฏขึ้น คลิกตกลงเพื่อปิด
- กลับไปที่หน้าข้อมูลเข้าสู่ระบบ ให้เลื่อนลงไปที่ "รหัสไคลเอ็นต์ OAuth2" ค้นหาและคลิกไอคอนดาวน์โหลด
ที่ด้านล่างขวาของรหัสไคลเอ็นต์ที่สร้างขึ้นใหม่ วันที่
- การดำเนินการนี้จะเปิดกล่องโต้ตอบเพื่อบันทึกไฟล์ชื่อ
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
ซึ่งมีแนวโน้มที่จะอยู่ในโฟลเดอร์ดาวน์โหลด เราขอแนะนำให้ย่อชื่อให้สั้นลง เช่นclient_secret.json
(ซึ่งเป็นสิ่งที่แอปตัวอย่างใช้) จากนั้นบันทึกลงในไดเรกทอรี/โฟลเดอร์ที่คุณจะสร้างแอปตัวอย่างใน Codelab นี้
สรุป
เมื่อมีข้อมูลเข้าสู่ระบบแล้ว ตอนนี้คุณก็พร้อมที่จะเข้าถึง Drive API จากแอปของคุณแล้ว โปรดทราบว่าวัตถุประสงค์ของรหัสไคลเอ็นต์ OAuth คือผู้ใช้ต้องให้สิทธิ์แก่แอปของคุณเพื่อเข้าถึงข้อมูลของตนใน Google ไดรฟ์
หมายเหตุ: รายละเอียดเพิ่มเติมเกี่ยวกับการสร้างโปรเจ็กต์ การเปิดใช้ API และการรับข้อมูลรับรองด้วยตนเอง เช่น โดยไม่ใช้ "วิซาร์ด" ได้หลังสิ้นสุด Codelab นี้เพื่อศึกษาเพิ่มเติม
8. การแสดงไฟล์ในไดรฟ์และ แอปพลิเคชันโฟลเดอร์
ไม่ว่าจะอยู่ในสภาพแวดล้อมการพัฒนาในเครื่องหรือใน Cloud Shell ในไดเรกทอรีเดียวกันกับที่มีไฟล์ข้อมูลเข้าสู่ระบบ client_id.json
ของคุณ ให้สร้างไฟล์ Python ใหม่ชื่อ drive_list.py
แล้วเพิ่มบรรทัดของโค้ดด้านล่าง
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 ไดรฟ์ของผู้ใช้ และ จอแสดงผล
หมายเหตุ: ดูรายละเอียดของโค้ดได้แบบเจาะลึกยิ่งขึ้นและดูคำอธิบายแบบทีละบรรทัดหลังจากสรุป 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 ผู้ใช้ต้องให้สิทธิ์ที่ชัดเจนสำหรับสิทธิ์ที่ขอนอกเหนือจาก "การเรียกใช้" จะมีข้อยกเว้นสำหรับสคริปต์ และสคริปต์จะไม่ดำเนินการต่อ
หมายเหตุ: ผู้ใช้บางรายมีเบราว์เซอร์หลายเบราว์เซอร์ และคำขอการให้สิทธิ์อาจปรากฏขึ้นในเบราว์เซอร์ที่ไม่ต้องการ หากเป็นเช่นนั้น ให้คัดลอก 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 ดังกล่าวนั้นคุณจะได้รับประสบการณ์การใช้งานที่แทบจะเหมือนกับสิ่งที่อธิบายไว้ข้างต้นสำหรับสภาพแวดล้อมการพัฒนาในเครื่อง ความแตกต่างที่คีย์คือส่วนท้าย ซึ่งคุณจะได้รับหน้าจออีก 1 หน้าจอพร้อมรหัสยืนยันสำหรับป้อนใน 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 (API ของ REST และ SDK/API แบบเนทีฟสำหรับ Android)
- เอกสารประกอบอื่นๆ ของ Google Workspace API
- เอกสารประกอบอื่นๆ ของ Google APIs
- ไลบรารีของไคลเอ็นต์ของ Google APIs
- เอกสารประกอบ OAuth2
วิดีโอที่เกี่ยวข้องและวิดีโอทั่วไป
- การสร้างโปรเจ็กต์ Google API ใหม่ ( บล็อกโพสต์และวิดีโอ)
- การตรวจสอบโค้ดต้นแบบสำหรับการให้สิทธิ์ 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] ส่วนเสริมของเอกสารและ API ภาษาธรรมชาติของ GCP
- [Apps Script] เฟรมเวิร์กของบ็อต Hangouts Chat
- [REST API] เครื่องมือการรายงานที่กำหนดเอง (ชีต API)
- [REST API] เครื่องมือสร้างสไลด์ที่กำหนดเองสำหรับเครื่องมือวิเคราะห์ BigQuery ใบอนุญาต GitHub (สไลด์ + BigQuery API)
ขั้นสูง
- [REST API] เวิร์กโฟลว์การประมวลผลรูปภาพในระบบคลาวด์ (ไดรฟ์, Cloud Storage, Cloud Vision, Sheets API)
แอปอ้างอิง
- เครื่องมือแปลงมาร์กดาวน์เป็น 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 APIhttplib2
มีไคลเอ็นต์ 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()))
ดึงข้อมูลและ แสดงไฟล์/โฟลเดอร์ในไดรฟ์ 100 รายการแรก และ MIMEtypes)
files = DRIVE.files().list().execute().get('files', [])
for f in files:
print(f['name'], f['mimeType'])
- บรรทัดถัดไปของโค้ดจะเรียกใช้เมธอด
list()
ในคอลเล็กชันfiles()
สำหรับ Drive API เพื่อสร้างคำขอ ซึ่งจะเรียกใช้ด้วยexecute()
ทันที ระบบจะแสดงผลdict
ของ Python ซึ่งเราขอคีย์'files'
เพื่อรับไฟล์ 100 และ ชื่อโฟลเดอร์จาก Google ไดรฟ์ของผู้ใช้ (หรือน้อยกว่า หากมีไฟล์น้อยกว่า) - ทำไมจึงต้องใช้ 100 คือค่าเริ่มต้นจาก
DRIVE.files().list()
หากต้องการเปลี่ยนตัวเลขนี้ เช่น 10 ไฟล์หรือ 1,000 ไฟล์ ให้เพิ่มพารามิเตอร์pageSize
ลงในคำขอDRIVE.files().list(pageSize=10)
ดูตัวเลือกเพิ่มเติมได้ในเอกสารประกอบ - ส่วนสุดท้ายของสคริปต์จะวนซ้ำในแต่ละไฟล์และแสดงชื่อและชื่อไฟล์ ประเภท MIME ของไฟล์
คุณได้เขียนใบสมัครที่ใช้ Google REST API เป็นครั้งแรกแล้ว... ยินดีด้วย! นอกจากการนำเข้าและรหัสการให้สิทธิ์แล้ว สคริปต์นี้เป็นเพียงโค้ดไม่กี่บรรทัดเท่านั้น (สิ่งที่คุณเห็นด้านบน) Google API ส่วนใหญ่ทำงานในลักษณะเดียวกันและคุณจะต้องสร้างปลายทางบริการสำหรับแต่ละปลายทางที่ต้องการใช้เท่านั้น
การใช้ Google API มากกว่า 1 รายการในแอป
แน่นอน คุณสามารถใช้ API ได้มากกว่า 1 รายการในแอปเดียวกัน ต่อไปนี้คือข้อมูลโค้ด Python สำหรับแอปที่ใช้ไคลเอ็นต์ HTTP เดียวกันซ้ำและสร้างปลายทางของบริการให้กับ Google API 3 รายการ (ใช่แล้ว พร้อมกับ SCOPES
อีก 3 รายการด้วย)
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)
เราคิดว่าโค้ดนี้อาจเป็นส่วนหนึ่งของแอปที่สร้างชุดสไลด์หลายชุด (สไลด์ API) โดยอาศัยข้อมูลสเปรดชีต (ชีต API) และใช้เทมเพลตสไลด์ที่คัดลอกมา (API ไดรฟ์) สำหรับชุดสไลด์แต่ละชุดที่สร้างขึ้น แม้จะไม่มีแอปดังกล่าว คุณก็ควรสร้างสิ่งที่คล้ายกันได้โดยใช้ตัวอย่าง 2 ตัวอย่างที่มีอยู่ซึ่งทีม Google Workspace สร้างขึ้นเป็นองค์ประกอบพื้นฐาน ดังนี้
- การแทนที่ข้อความและ รูปภาพในสไลด์ ( บล็อกโพสต์และวิดีโอ) ใช้ Drive API เพื่อคัดลอกชุดเทมเพลตสไลด์ จากนั้นใช้ Slides API เพื่อเปลี่ยนข้อความและ ตัวยึดตำแหน่งรูปภาพ
- สร้างสไลด์จากข้อมูลสเปรดชีต ( บล็อกโพสต์และวิดีโอ) - อ่านข้อมูลจากสเปรดชีต (ชีต API) และสร้างสไลด์ (API สไลด์) โดยอิงจากข้อมูลนั้น
ความท้าทาย: สร้างแอปนั้น
12. *การใช้งาน devconsole ขั้นสูง
ในส่วนที่ไม่บังคับนี้ เราจะอธิบายวิธีสร้างโปรเจ็กต์ใน devconsole, เปิดใช้ API และรับข้อมูลเข้าสู่ระบบ โดยไม่ต้องใช้วิซาร์ดดังข้างต้นใน Codelab สำหรับผู้ใช้ระดับกลางที่สามารถทำได้ด้วยตนเองหรือต้องการเรียนรู้วิธีดำเนินการ
ระบุโปรเจ็กต์ใน Cloud Console
ทุกครั้งที่คุณเขียนแอปพลิเคชันโดยใช้ Google API คุณจะต้องมีโปรเจ็กต์ คุณจะใช้โปรเจ็กต์ที่มีอยู่ซ้ำหรือสร้างโปรเจ็กต์ใหม่ก็ได้ การดำเนินการดังกล่าวจะเกิดขึ้นใน Cloud Console Codelab บางแห่งมีลิงก์วิเศษ (เช่น วิซาร์ดการตั้งค่า) ที่ช่วยให้คุณดำเนินการได้อย่างรวดเร็ว โดยข้ามขั้นตอนที่จำเป็นหลายๆ อย่างได้ แต่ไม่ใช่ทุกวิธี เราจึงมีจุดมุ่งหมายเพื่อให้เป็นวิธีการทั่วไปในการสร้างโปรเจ็กต์
คุณสร้างโปรเจ็กต์ได้จากหน้าจอส่วนใหญ่ใน Cloud Console ตราบใดที่ลงชื่อเข้าสู่ระบบด้วยข้อมูลเข้าสู่ระบบของ Google และดูเมนูแบบเลื่อนลงของโปรเจ็กต์ที่ด้านบนของคอนโซล โปรดทราบว่าภาพหน้าจอส่วนใหญ่นี้นำมาจากเครื่องมือจัดการ API หรือ Developers Console (เข้าถึงง่ายด้วยการคลิก "ตัวจัดการ API" ในการนำทางด้านซ้าย หรือชี้เบราว์เซอร์ไปที่ console.developers.google.com โดยตรง)
- หากยังไม่มีโปรเจ็กต์ ระบบอาจนำคุณไปที่...
- หน้าแดชบอร์ด:
- หน้าคลัง:
- หรือหน้าที่ว่างเปล่าโดยสมบูรณ์:
หากหน้าที่ 3 นี้เกิดขึ้นกับคุณ เพียงรีเฟรชเบราว์เซอร์เพื่อไปยังหน้าไลบรารี
- ไม่ว่าคุณจะอยู่ในหน้าแดชบอร์ดหรือไลบรารี ให้คลิกตัวเลือกโปรเจ็กต์ที่ด้านบนของหน้า ดังนี้
- ถัดไป คุณจะเห็นกล่องโต้ตอบตัวเลือก คลิกที่ปุ่ม "+" ทางด้านขวามือเพื่อสร้างโปรเจ็กต์ใหม่:
- หลังจากคลิก "+" หน้าโปรเจ็กต์ใหม่จะปรากฏขึ้น โดยค่าเริ่มต้น บัญชีผู้ใช้ทั่วไปทั้งหมดจะได้รับ 12 โปรเจ็กต์ ก่อนที่จะสร้างโปรเจ็กต์แรก คุณจะต้องยอมรับข้อกำหนดในการให้บริการของ Google APIs:
หลังจากดำเนินการแล้ว เมื่อสร้างโปรเจ็กต์ในอนาคต คำถามเกี่ยวกับข้อความเชิญทางอีเมลและข้อกำหนดในการให้บริการจะหายไป
5. หากเคยสร้างไว้อย่างน้อย 1 โปรเจ็กต์ เมื่อเข้าสู่ระบบแล้ว ระบบจะนําคุณไปยังแดชบอร์ดของโปรเจ็กต์ล่าสุดที่คุณทำงาน จากนั้น ให้สร้างโปรเจ็กต์ใหม่ตามการเลือกเลือกโปรเจ็กต์ > + 6. เมื่อสร้างโปรเจ็กต์ใหม่เรียบร้อยแล้ว คุณจะกลับมาที่หน้าแดชบอร์ด:
ตอนนี้คุณได้สร้างโปรเจ็กต์เสร็จสมบูรณ์แล้ว และพร้อมที่จะดำเนินการต่อด้วยการเลือก API ที่ต้องการใช้สำหรับโปรเจ็กต์ของคุณ
เปิดใช้ Google APIs
ก่อนที่คุณจะเริ่มใช้ API ของ Google คุณต้องเปิดใช้ API เหล่านี้ ตัวอย่างด้านล่างแสดงสิ่งที่คุณจะต้องทำเพื่อเปิดใช้ Cloud Vision API ใน Codelab นี้ คุณอาจใช้ API อย่างน้อย 1 รายการ และควรทำตามขั้นตอนที่คล้ายกันเพื่อเปิดใช้ก่อนการใช้งาน
จาก Cloud Shell
เมื่อใช้ Cloud Shell คุณจะเปิดใช้ API ได้โดยใช้คำสั่งต่อไปนี้
gcloud services enable vision.googleapis.com
จาก Cloud Console
คุณยังเปิดใช้ Vision API ในตัวจัดการ API ได้ด้วย จาก Cloud Console ให้ไปที่ตัวจัดการ API แล้วเลือก "ไลบรารี"
ในแถบค้นหา เริ่มพิมพ์ "วิสัยทัศน์" แล้วเลือก Vision API เมื่อปรากฏขึ้น ขณะที่คุณพิมพ์ จะมีลักษณะดังนี้
เลือก Cloud Vision API เพื่อรับกล่องโต้ตอบที่คุณเห็นด้านล่าง แล้วคลิก "เปิดใช้" ปุ่ม:
ค่าใช้จ่าย
แม้ว่าคุณจะใช้ Google APIs จำนวนมากได้โดยไม่เสียค่าธรรมเนียม แต่การใช้ GCP (ผลิตภัณฑ์และ API) ก็ไม่ได้คิดค่าใช้จ่าย เมื่อเปิดใช้ Vision API (ตามที่อธิบายไว้ข้างต้น) ระบบอาจขอบัญชีสำหรับการเรียกเก็บเงินที่ใช้งานอยู่ ผู้ใช้ควรอ้างอิงข้อมูลราคาของ Vision API ก่อนเปิดใช้ โปรดทราบว่าผลิตภัณฑ์ Google Cloud Platform (GCP) บางอย่างจะมี "ฟรีเสมอ" ระดับ ซึ่งคุณจะต้องเกินเพื่อทำให้เกิดการเรียกเก็บเงิน ตามวัตถุประสงค์ของ Codelab การเรียกไปยัง Vision API แต่ละครั้งจะนับรวมในรุ่นฟรีนั้น และตราบใดที่คุณยังใช้งานไม่เกินขีดจำกัดโดยรวม (ภายในแต่ละเดือน) คุณไม่ควรเสียค่าใช้จ่ายใดๆ
Google API บางรายการ เช่น Google Workspace มีการใช้งานตามการสมัครใช้บริการรายเดือน จึงไม่มีการเรียกเก็บเงินโดยตรงสำหรับการใช้งาน API ของ Gmail, Google ไดรฟ์, ปฏิทิน, เอกสาร, ชีต และสไลด์ เป็นต้น ผลิตภัณฑ์ที่แตกต่างกันของ Google จะมีการเรียกเก็บเงินไม่เหมือนกัน ดังนั้น โปรดตรวจสอบข้อมูลดังกล่าวในเอกสารประกอบของ API ด้วย
สรุป
ใน Codelab นี้ คุณเพียงต้องเปิด Google Drive API ดังนั้น โปรดทำตามวิธีการด้านบนและค้นหา "ไดรฟ์" ดำเนินการต่อเมื่อเปิดใช้แล้ว
ให้สิทธิ์คำขอ API (การให้สิทธิ์ผู้ใช้)
ข้อมูลเบื้องต้นเกี่ยวกับการให้สิทธิ์ (รวมถึงการตรวจสอบสิทธิ์บางอย่าง)
ในการส่งคำขอไปยัง API แอปพลิเคชันของคุณต้องมีการให้สิทธิ์ที่เหมาะสม การตรวจสอบสิทธิ์ มีคำอื่นๆ ที่คล้ายกัน อธิบายเกี่ยวกับข้อมูลเข้าสู่ระบบ โดยตรวจสอบสิทธิ์ของตนเองเมื่อเข้าสู่ระบบบัญชี Google ด้วยข้อมูลเข้าสู่ระบบ รหัสผ่าน เมื่อตรวจสอบสิทธิ์แล้ว ขั้นตอนถัดไปคือคุณโค้ดของคุณจะได้รับสิทธิ์ในการเข้าถึงข้อมูล เช่น ไฟล์ BLOB บน Cloud Storage หรือไฟล์ส่วนตัวของผู้ใช้ใน Google ไดรฟ์หรือไม่
Google API รองรับการให้สิทธิ์หลายประเภท แต่ประเภทที่พบบ่อยที่สุดสำหรับผู้ใช้ Google Workspace API คือการให้สิทธิ์ผู้ใช้ เนื่องจากแอปพลิเคชันตัวอย่างใน Codelab นี้จะเข้าถึงข้อมูลที่เป็นของผู้ใช้ปลายทาง ผู้ใช้ปลายทางเหล่านั้นต้องให้สิทธิ์แอปของคุณในการเข้าถึงข้อมูลของตน ซึ่งหมายความว่าโค้ดของคุณจะต้องรับข้อมูลเข้าสู่ระบบ OAuth2 ของบัญชีผู้ใช้
หากต้องการรับข้อมูลเข้าสู่ระบบ OAuth2 สำหรับการให้สิทธิ์ผู้ใช้ ให้กลับไปที่ตัวจัดการ API แล้วเลือก "ข้อมูลเข้าสู่ระบบ" แท็บที่การนำทางด้านซ้าย:
เมื่อไปถึงเว็บไซต์ คุณจะเห็นข้อมูลเข้าสู่ระบบทั้งหมดแบ่งออกเป็น 3 ส่วน ดังนี้
อันแรกคือคีย์ API รหัสไคลเอ็นต์ OAuth 2.0 รายการที่ 2 และบัญชีบริการ OAuth2 อันสุดท้าย ซึ่งเรากำลังใช้รหัสที่อยู่ตรงกลาง
กำลังสร้างข้อมูลเข้าสู่ระบบ
จากหน้าข้อมูลเข้าสู่ระบบ ให้คลิกปุ่ม + สร้างข้อมูลเข้าสู่ระบบ ที่ด้านบนซึ่งจะแสดงกล่องโต้ตอบให้คุณเลือก "รหัสไคลเอ็นต์ OAuth:"
ในหน้าจอถัดไป คุณจะมี 2 การดำเนินการ ได้แก่ การกำหนดค่า "หน้าจอคำยินยอม" สำหรับการให้สิทธิ์ของแอป และเลือกประเภทแอปพลิเคชัน
หากยังไม่ได้ตั้งค่าหน้าจอขอความยินยอม คุณจะเห็นคำเตือนในคอนโซลและต้องดำเนินการทันที (ข้ามขั้นตอนนี้หากตั้งค่าหน้าจอคำยินยอมไว้แล้ว)
หน้าจอคำยินยอม OAuth
คลิก "กำหนดค่าหน้าจอคำยินยอม" ที่คุณเลือกแท็บ "ภายนอก" แอป (หรือ "ภายใน" หากคุณเป็นลูกค้า Google Workspace) ให้ทำดังนี้
โปรดทราบว่าเพื่อให้เป็นไปตามจุดประสงค์ของแบบฝึกหัดนี้ คุณจะเลือกใดก็ได้ เพราะคุณไม่ได้เผยแพร่ตัวอย่าง Codelab ผู้ใช้ส่วนใหญ่จะเลือก "ภายนอก" เพื่อไปยังหน้าจอที่ซับซ้อนมากขึ้น แต่คุณต้องกรอก "ชื่อแอปพลิเคชัน" เท่านั้น ที่ด้านบน
สิ่งเดียวที่คุณต้องมีในขณะนี้มีเพียงชื่อแอปพลิเคชัน ดังนั้นโปรดเลือกบุคคลที่สอดคล้องกับ Codelab ที่คุณกำลังทำ แล้วคลิกบันทึก
กำลังสร้างรหัสไคลเอ็นต์ OAuth (การตรวจสอบสิทธิ์บัญชีผู้ใช้)
จากนั้นกลับไปที่แท็บข้อมูลเข้าสู่ระบบเพื่อสร้างรหัสไคลเอ็นต์ OAuth2 ในส่วนนี้ คุณจะเห็นรหัสไคลเอ็นต์ OAuth แบบต่างๆ ที่คุณสามารถสร้างได้
เรากำลังพัฒนาเครื่องมือบรรทัดคำสั่ง ซึ่งก็คืออื่นๆ ดังนั้นโปรดเลือกเครื่องมือดังกล่าว แล้วคลิกปุ่มสร้าง เลือกชื่อรหัสไคลเอ็นต์ที่แสดงถึงแอปที่คุณกำลังสร้าง หรือใช้ชื่อเริ่มต้นซึ่งมักเป็น "ไคลเอ็นต์อื่น N"
กำลังบันทึกข้อมูลเข้าสู่ระบบ
- กล่องโต้ตอบที่มีข้อมูลเข้าสู่ระบบใหม่จะปรากฏขึ้น คลิกตกลงเพื่อปิด
- กลับไปที่หน้าข้อมูลเข้าสู่ระบบ ให้เลื่อนลงไปที่ "รหัสไคลเอ็นต์ OAuth2" ค้นหาและคลิกไอคอนดาวน์โหลด
ที่ด้านล่างขวาของรหัสไคลเอ็นต์ที่สร้างขึ้นใหม่ วันที่
- การดำเนินการนี้จะเปิดกล่องโต้ตอบเพื่อบันทึกไฟล์ชื่อ
client_secret-
LONG-HASH-STRING
.apps.googleusercontent.com.json
ซึ่งมีแนวโน้มที่จะอยู่ในโฟลเดอร์ดาวน์โหลด เราขอแนะนำให้ย่อชื่อให้สั้นลง เช่นclient_secret.json
(ซึ่งเป็นสิ่งที่แอปตัวอย่างใช้) จากนั้นบันทึกลงในไดเรกทอรี/โฟลเดอร์ที่คุณจะสร้างแอปตัวอย่างใน Codelab นี้