เอกสารนี้อธิบายวิธีที่แอปพลิเคชันติดตั้งในอุปกรณ์ เช่น โทรศัพท์ แท็บเล็ต และ คอมพิวเตอร์ใช้ปลายทาง OAuth 2.0 ของ Google เพื่ออนุญาตการเข้าถึง API ข้อมูลของ YouTube
OAuth 2.0 ช่วยให้ผู้ใช้แชร์ข้อมูลที่ต้องการกับแอปพลิเคชันโดยที่ยังเก็บข้อมูล ชื่อผู้ใช้ รหัสผ่าน และข้อมูลอื่นๆ เป็นส่วนตัว เช่น แอปพลิเคชันใช้ OAuth 2.0 เพื่อขอสิทธิ์ได้ เพื่ออัปโหลดวิดีโอไปยังช่อง YouTube ของผู้ใช้
แอปที่ติดตั้งจะเผยแพร่ไปยังอุปกรณ์แต่ละเครื่อง และจะถือว่าแอปเหล่านี้ ไม่สามารถเก็บความลับได้ ผู้ใช้สามารถเข้าถึง Google API ขณะที่ผู้ใช้อยู่ในแอปหรือเมื่ออยู่ แอปกำลังทำงานในพื้นหลัง
ขั้นตอนการให้สิทธิ์นี้จะคล้ายกับขั้นตอนการให้สิทธิ์ แอปพลิเคชันเว็บเซิร์ฟเวอร์ ความแตกต่างที่สำคัญคือ ที่แอปพลิเคชันติดตั้งไว้ต้องเปิดเบราว์เซอร์ระบบและระบุ URI การเปลี่ยนเส้นทางภายในเพื่อจัดการ การตอบกลับจากเซิร์ฟเวอร์การให้สิทธิ์ของ Google
ตัวเลือกอื่นๆ
สำหรับแอปบนอุปกรณ์เคลื่อนที่ คุณอาจต้องการใช้ Google Sign-In สำหรับ Android หรือ iOS Google Sign-In ไลบรารีของไคลเอ็นต์จะจัดการกับการตรวจสอบสิทธิ์และการให้สิทธิ์ผู้ใช้ และอาจทำได้ง่ายกว่า ถูกนำไปใช้มากกว่าโปรโตคอลระดับล่างที่อธิบายในที่นี้
สำหรับแอปที่ทำงานบนอุปกรณ์ที่ไม่สนับสนุนเบราว์เซอร์ของระบบหรือที่มีการป้อนข้อมูลที่จำกัด เช่น ทีวี คอนโซลเกม กล้อง หรือเครื่องพิมพ์ ดูที่ OAuth 2.0 สำหรับทีวีและ อุปกรณ์ หรือลงชื่อเข้าใช้บนทีวีและอุปกรณ์อินพุตที่จำกัด
ห้องสมุดและตัวอย่าง
เราขอแนะนำให้ใช้ไลบรารีและตัวอย่างต่อไปนี้เพื่อช่วยในการใช้งานขั้นตอน OAuth 2.0 ตามที่อธิบายไว้ในเอกสารนี้
ข้อกำหนดเบื้องต้น
เปิดใช้ API สำหรับโปรเจ็กต์
แอปพลิเคชันใดๆ ที่เรียกใช้ Google APIs จำเป็นต้องเปิดใช้ API เหล่านั้นใน API Console
วิธีเปิดใช้ API สำหรับโปรเจ็กต์
- Open the API Library ใน Google API Console
- If prompted, select a project, or create a new one.
- ใช้หน้าคลังเพื่อค้นหาและเปิดใช้ YouTube Data API ค้นหาอื่นๆ API ที่แอปพลิเคชันของคุณจะใช้และเปิดใช้ด้วย
สร้างข้อมูลเข้าสู่ระบบการให้สิทธิ์
แอปพลิเคชันที่ใช้ OAuth 2.0 เพื่อเข้าถึง Google API จะต้องมีข้อมูลเข้าสู่ระบบการให้สิทธิ์ ที่ระบุแอปพลิเคชันไปยังเซิร์ฟเวอร์ OAuth 2.0 ของ Google ขั้นตอนต่อไปนี้จะอธิบายถึงวิธีการ สร้างข้อมูลเข้าสู่ระบบสำหรับโปรเจ็กต์ จากนั้นแอปพลิเคชันของคุณสามารถใช้ข้อมูลรับรองเพื่อเข้าถึง API ที่คุณเปิดใช้สำหรับโปรเจ็กต์นั้น
- Go to the Credentials page.
- คลิกสร้างข้อมูลเข้าสู่ระบบ > รหัสไคลเอ็นต์ OAuth
- ส่วนด้านล่างนี้อธิบายประเภทไคลเอ็นต์และวิธีการเปลี่ยนเส้นทางที่ รองรับเซิร์ฟเวอร์การให้สิทธิ์ เลือกประเภทไคลเอ็นต์ที่แนะนำสำหรับ แอปพลิเคชัน ให้ตั้งชื่อไคลเอ็นต์ OAuth และตั้งค่าช่องอื่นๆ ในแบบฟอร์มเป็น เหมาะสม
Android
- เลือกประเภทแอปพลิเคชัน Android
- ป้อนชื่อสำหรับไคลเอ็นต์ OAuth ชื่อนี้จะปรากฏใน Credentials page เพื่อระบุลูกค้า
- ป้อนชื่อแพ็กเกจของแอป Android ค่านี้จะระบุไว้ในฟิลด์
แอตทริบิวต์
package
ขององค์ประกอบ<manifest>
ในไฟล์ Manifest ของแอป - ป้อนลายนิ้วมือสำหรับใบรับรองการลงนาม SHA-1 ของการเผยแพร่แอป
- หากแอปของคุณใช้ App Signing โดย Google Play ให้คัดลอก SHA-1 ลายนิ้วมือจากหน้า App Signing ของ Play Console
- หากคุณจัดการคีย์สโตร์และคีย์การรับรองของคุณเอง ให้ใช้ยูทิลิตีเครื่องมือคีย์
มาพร้อมกับ Java เพื่อพิมพ์ข้อมูลใบรับรองในรูปแบบที่มนุษย์อ่านได้ คัดลอก
SHA1
ในส่วนCertificate fingerprints
ของพารามิเตอร์ เอาต์พุตเครื่องมือคีย์ โปรดดู การตรวจสอบสิทธิ์ไคลเอ็นต์ใน สำหรับข้อมูลเพิ่มเติมในเอกสาร Google APIs สำหรับ Android
- (ไม่บังคับ) ยืนยันการเป็นเจ้าของ Android แอปพลิเคชัน
- คลิกสร้าง
iOS
- เลือกประเภทแอปพลิเคชัน iOS
- ป้อนชื่อสำหรับไคลเอ็นต์ OAuth ชื่อนี้จะปรากฏใน Credentials page เพื่อระบุลูกค้า
- ป้อนตัวระบุชุดซอฟต์แวร์สําหรับแอปของคุณ รหัสชุดคือค่าของฟิลด์ CFBundleIdentifier ในไฟล์ทรัพยากรรายการพร็อพเพอร์ตี้ข้อมูลของแอป (info.plist) ค่า แสดงมากที่สุดในแผง "ทั่วไป" หรือช่อง "และ" แผงความสามารถของ ผู้แก้ไขโปรเจ็กต์ Xcode รหัสชุดยังแสดงในส่วนข้อมูลทั่วไปของ หน้าข้อมูลแอปสำหรับแอปบน เว็บไซต์ App Store Connect ของ Apple
- (ไม่บังคับ)
ป้อนรหัส App Store ของแอปหากมีการเผยแพร่แอปใน App Store ของ Apple รหัสร้านค้าคือ สตริงตัวเลขที่รวมอยู่ใน URL ของ Apple App Store ทั้งหมด
- เปิด แอป Apple App Store บนอุปกรณ์ iOS หรือ iPadOS
- ค้นหาแอปของคุณ
- เลือกปุ่มแชร์ (สัญลักษณ์สี่เหลี่ยมจัตุรัสและลูกศรขึ้น)
- เลือกคัดลอกลิงก์
- วางลิงก์ลงในเครื่องมือแก้ไขข้อความ รหัส App Store คือส่วนสุดท้ายของ URL
เช่น
https://apps.apple.com/app/google/id284815942
- (ไม่บังคับ)
ป้อนรหัสทีม โปรดดู ค้นหารหัสทีม ในเอกสารประกอบของบัญชีนักพัฒนาแอป Apple เพื่อดูข้อมูลเพิ่มเติม
- คลิกสร้าง
UWP
- เลือกประเภทแอปพลิเคชัน Universal Windows Platform
- ป้อนชื่อสำหรับไคลเอ็นต์ OAuth ชื่อนี้จะปรากฏใน Credentials page เพื่อระบุลูกค้า
- ป้อนรหัส Microsoft Store แบบ 12 อักขระของแอป คุณจะเห็นค่านี้ใน ศูนย์พาร์ทเนอร์ Microsoft ใน ข้อมูลระบุตัวตนของแอป ในส่วนการจัดการแอป
- คลิกสร้าง
สำหรับแอป UWP รูปแบบ URI ที่กำหนดเองต้องมีความยาวไม่เกิน 39 อักขระ
ชุดรูปแบบ URI ที่กำหนดเอง (Android, iOS, UWP)
รูปแบบ URI ที่กำหนดเองคือรูปแบบของ Deep Link ที่ใช้รูปแบบที่กำหนดเองในการเปิดแอป
ทางเลือกอื่นนอกจากการใช้รูปแบบ URI ที่กำหนดเองใน Androidใช้เมนู SDK ของ Google Sign-In สำหรับ Android ซึ่งจะส่งการตอบกลับ OAuth 2.0 ไปยังแอปของคุณโดยตรง ทำให้ไม่จำเป็นต้องมี URI การเปลี่ยนเส้นทาง
วิธีย้ายข้อมูลไปยัง Google Sign-In สำหรับ Android SDK
หากคุณกำลังใช้รูปแบบที่กำหนดเองสำหรับการผสานรวม OAuth ใน Android คุณจะต้องดำเนินการต่อไปนี้ ดำเนินการด้านล่างนี้ให้เสร็จสมบูรณ์เพื่อย้ายข้อมูลไปใช้ Google Sign-In ที่แนะนำสำหรับ Android SDK
- อัปเดตโค้ดเพื่อใช้ Google Sign-In SDK
- ปิดใช้การรองรับสคีมที่กำหนดเองในคอนโซล Google API
โปรดทำตามขั้นตอนด้านล่างเพื่อย้ายข้อมูลไปยัง SDK สำหรับ Android ของ Google Sign-In
-
อัปเดตโค้ดเพื่อใช้ Google Sign-In Android SDK ดังนี้
-
ตรวจสอบโค้ดเพื่อระบุตำแหน่งของคุณ
การส่งคำขอไปยังเซิร์ฟเวอร์ OAuth 2.0 ของ Google หากใช้สคีมที่กำหนดเอง คำขอของคุณจะมีลักษณะดังต่อไปนี้
https://accounts.google.com/o/oauth2/v2/auth? scope=<SCOPES>& response_type=code& &state=<STATE>& redirect_uri=com.example.app:/oauth2redirect& client_id=<CLIENT_ID>
com.example.app:/oauth2redirect
คือ URI การเปลี่ยนเส้นทางรูปแบบที่กำหนดเองใน ตัวอย่างด้านบน โปรดดู คำจำกัดความพารามิเตอร์redirect_uri
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับรูปแบบ ของค่ารูปแบบ URI ที่กำหนดเอง -
บันทึกพารามิเตอร์คำขอ
scope
และclient_id
ซึ่ง คุณต้องกำหนดค่า SDK ของ Google Sign-In -
ทำตาม
เริ่มผสานรวม Google Sign-In ในแอป Android
วิธีการตั้งค่า SDK คุณสามารถข้าม
ขั้นตอนรับรหัสไคลเอ็นต์ OAuth 2.0 ของเซิร์ฟเวอร์แบ็กเอนด์เหมือนที่ใช้ซ้ำ
client_id
ที่ดึงมาจากขั้นตอนก่อนหน้า -
ทำตาม
การเปิดใช้การเข้าถึง API ฝั่งเซิร์ฟเวอร์
วิธีทำ ซึ่งรวมถึงขั้นตอนต่อไปนี้
-
ใช้เมธอด
getServerAuthCode
เพื่อเรียกข้อมูลรหัสการให้สิทธิ์สำหรับ ขอบเขตที่คุณขอสิทธิ์ - ส่งรหัสการตรวจสอบสิทธิ์ไปยังแบ็กเอนด์ของแอปเพื่อแลกเปลี่ยนกับสิทธิ์เข้าถึงและ รีเฟรช โทเค็น
- ใช้โทเค็นเพื่อการเข้าถึงที่เรียกดูเพื่อเรียก Google APIs ในนามของผู้ใช้
-
ใช้เมธอด
-
ตรวจสอบโค้ดเพื่อระบุตำแหน่งของคุณ
การส่งคำขอไปยังเซิร์ฟเวอร์ OAuth 2.0 ของ Google หากใช้สคีมที่กำหนดเอง คำขอของคุณจะมีลักษณะดังต่อไปนี้
-
ปิดใช้การรองรับสคีมที่กำหนดเองในคอนโซล Google API ดังนี้
- ไปที่ ข้อมูลเข้าสู่ระบบ OAuth 2.0 แล้วเลือกไคลเอ็นต์ Android
- ไปที่ส่วนการตั้งค่าขั้นสูง ยกเลิกการเลือก ช่องทำเครื่องหมายเปิดใช้สคีม URI ที่กำหนดเอง แล้วคลิกบันทึกไปยัง ปิดใช้งานการสนับสนุนรูปแบบ URI ที่กำหนดเอง
กำลังเปิดใช้รูปแบบ URI ที่กำหนดเอง
หากทางเลือกที่แนะนำไม่ได้ผลสำหรับคุณ คุณสามารถเปิดใช้งานรูปแบบ URI ที่กำหนดเอง ไคลเอ็นต์ Android โดยทำตามวิธีการด้านล่าง- ไปที่ รายการข้อมูลเข้าสู่ระบบ OAuth 2.0 และ เลือกไคลเอ็นต์ Android ของคุณ
- ไปยังส่วนการตั้งค่าขั้นสูง ตรวจสอบ ช่องทำเครื่องหมายเปิดใช้สคีม URI ที่กำหนดเอง แล้วคลิกบันทึกเพื่อเปิดใช้ การสนับสนุนรูปแบบ URI ที่กำหนดเอง
ใช้เมนู Chrome Identity API ซึ่งจะส่งการตอบกลับ OAuth 2.0 ไปยังแอปของคุณโดยตรง ทำให้ไม่จำเป็นต้องมี URI การเปลี่ยนเส้นทาง
ยืนยันการเป็นเจ้าของแอป (Android, Chrome)
คุณสามารถยืนยันการเป็นเจ้าของแอปพลิเคชันของคุณเพื่อลดความเสี่ยงในการแอบอ้างเป็นแอป
Android
คุณใช้บัญชีนักพัฒนาแอป Google Play เพื่อดำเนินกระบวนการยืนยันตัวตนให้เสร็จสมบูรณ์ได้ หากคุณมีและได้ลงทะเบียนแอปใน Google Play Console ดังต่อไปนี้ ต้องมีคุณสมบัติตรงตามข้อกำหนดจึงจะยืนยันได้สำเร็จ
- คุณต้องมีแอปพลิเคชันที่ลงทะเบียนใน Google Play Console ด้วย ชื่อแพ็กเกจและลายนิ้วมือรับรองการลงนาม SHA-1 ในฐานะไคลเอ็นต์ OAuth ของ Android ที่คุณใช้ ดำเนินการยืนยันให้เสร็จสมบูรณ์สำหรับ
- คุณต้องมีสิทธิ์ผู้ดูแลระบบสำหรับแอปใน Google Play Console ดูข้อมูลเพิ่มเติม เกี่ยวกับการจัดการการเข้าถึงใน Google Play Console
ในส่วนยืนยันการเป็นเจ้าของแอปของไคลเอ็นต์ Android ให้คลิก ปุ่มยืนยันการเป็นเจ้าของเพื่อให้กระบวนการยืนยันเสร็จสมบูรณ์
หากการยืนยันสำเร็จ ระบบจะแสดงการแจ้งเตือนเพื่อยืนยันว่าดำเนินการสำเร็จ ของกระบวนการยืนยันตัวตน ไม่เช่นนั้น ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น
โปรดลองทำตามขั้นตอนต่อไปนี้เพื่อแก้ไขการยืนยันที่ไม่สำเร็จ
- ตรวจสอบว่าแอปที่จะยืนยันเป็นแอปที่ลงทะเบียนใน Google Play Console
- โปรดตรวจสอบว่าคุณมีสิทธิ์ระดับผู้ดูแลระบบสำหรับแอปใน Google Play Console
Chrome
ในการดำเนินกระบวนการยืนยันตัวตนให้เสร็จสมบูรณ์ คุณต้องใช้บัญชีนักพัฒนาซอฟต์แวร์ Chrome เว็บสโตร์ การยืนยันจะต้องเป็นไปตามข้อกำหนดต่อไปนี้
- คุณต้องมีรายการที่ลงทะเบียนใน แดชบอร์ดสำหรับนักพัฒนาซอฟต์แวร์ Chrome เว็บสโตร์ ด้วยรหัสรายการเดียวกันกับไคลเอ็นต์ OAuth ของส่วนขยาย Chrome ที่คุณกำลังดำเนินการ สำหรับ
- คุณต้องเป็นผู้เผยแพร่รายการใน Chrome เว็บสโตร์ ดูข้อมูลเพิ่มเติม เกี่ยวกับการจัดการการเข้าถึงในหน้าแดชบอร์ดสำหรับนักพัฒนาซอฟต์แวร์ Chrome เว็บสโตร์
ในส่วนยืนยันการเป็นเจ้าของแอปของไคลเอ็นต์ส่วนขยาย Chrome ให้คลิก ปุ่มยืนยันการเป็นเจ้าของ เพื่อให้กระบวนการยืนยันเสร็จสมบูรณ์
หมายเหตุ: โปรดรอสักครู่ก่อนดำเนินการยืนยันให้เสร็จสมบูรณ์หลังจาก การให้สิทธิ์เข้าถึงบัญชีของคุณ
หากการยืนยันสำเร็จ ระบบจะแสดงการแจ้งเตือนเพื่อยืนยันว่าดำเนินการสำเร็จ ของกระบวนการยืนยันตัวตน ไม่เช่นนั้น ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น
โปรดลองทำตามขั้นตอนต่อไปนี้เพื่อแก้ไขการยืนยันที่ไม่สำเร็จ
- ตรวจสอบว่ามีรายการที่ลงทะเบียนในแดชบอร์ดสำหรับนักพัฒนาซอฟต์แวร์ Chrome เว็บสโตร์พร้อมด้วย รหัสรายการเดียวกันกับไคลเอ็นต์ OAuth ของส่วนขยาย Chrome ที่คุณกําลังดําเนินการยืนยัน
- ตรวจสอบว่าคุณเป็นผู้เผยแพร่โฆษณาของแอป กล่าวคือคุณต้องเป็นผู้เผยแพร่โฆษณารายบุคคล ของแอปหรือสมาชิกผู้เผยแพร่กลุ่มของแอป ดูข้อมูลเพิ่มเติม เกี่ยวกับการจัดการการเข้าถึงในหน้าแดชบอร์ดสำหรับนักพัฒนาซอฟต์แวร์ Chrome เว็บสโตร์
- หากคุณเพิ่งอัปเดตรายชื่อผู้เผยแพร่กลุ่ม โปรดยืนยันว่าการเป็นสมาชิกผู้เผยแพร่กลุ่ม ระบบจะซิงค์รายการในหน้าแดชบอร์ดสำหรับนักพัฒนาซอฟต์แวร์ Chrome เว็บสโตร์ ดูข้อมูลเพิ่มเติม เกี่ยวกับการซิงค์รายชื่อ สมาชิกผู้เผยแพร่โฆษณาของคุณ
ที่อยู่ IP แบบ Loopback (macOS, Linux, Windows สำหรับเดสก์ท็อป)
ในการรับรหัสการให้สิทธิ์โดยใช้ URL นี้ แอปพลิเคชันของคุณจะต้องรับข้อมูลจาก เว็บเซิร์ฟเวอร์ภายใน ซึ่งเป็นไปได้ในหลายแพลตฟอร์ม แต่ไม่ใช่ทั้งหมด แต่หากแพลตฟอร์มที่ใช้ ซึ่งเป็นกลไกที่แนะนำในการรับรหัสการให้สิทธิ์
เมื่อแอปได้รับการตอบกลับการให้สิทธิ์ แอปควรตอบกลับเพื่อความสามารถในการใช้งานที่ดีที่สุด แสดงหน้า HTML ที่แจ้งให้ผู้ใช้ปิดเบราว์เซอร์และกลับไปยังแอปของคุณ
การใช้งานที่แนะนำ | แอปบนเดสก์ท็อปสำหรับ macOS, Linux และ Windows (ไม่ใช่แอป Universal Windows Platform) |
ค่าแบบฟอร์ม | ตั้งค่าประเภทแอปพลิเคชันเป็นแอปเดสก์ท็อป |
คัดลอก/วางด้วยตนเอง
ระบุขอบเขตการเข้าถึง
ขอบเขตช่วยให้แอปพลิเคชันสามารถขอเข้าถึงเฉพาะทรัพยากรที่จำเป็นต้องใช้ และ ทำให้ผู้ใช้สามารถควบคุมปริมาณการเข้าถึงที่จะมอบให้กับแอปพลิเคชันของคุณได้ ดังนั้นจึงมี อาจเป็นความสัมพันธ์แบบผกผันระหว่างจำนวนขอบเขตที่ขอกับแนวโน้ม การขอความยินยอมจากผู้ใช้
ก่อนที่จะเริ่มใช้การให้สิทธิ์ OAuth 2.0 เราขอแนะนำให้คุณระบุขอบเขต ที่แอปของคุณจะต้องมีสิทธิ์เข้าถึง
YouTube Data API v3 ใช้ขอบเขตต่อไปนี้
กล้องติดปืน | |
---|---|
https://www.googleapis.com/auth/youtube | จัดการบัญชี YouTube ของคุณ |
https://www.googleapis.com/auth/youtube.channel-memberships.creator | ดูรายชื่อสมาชิกปัจจุบันที่ใช้งานอยู่ในช่องของคุณ ระดับปัจจุบันของสมาชิก และวันที่เริ่มเป็นสมาชิก |
https://www.googleapis.com/auth/youtube.force-ssl | ดู แก้ไข และลบวิดีโอ YouTube การจัดประเภท ความคิดเห็น และคำบรรยายวิดีโออย่างถาวร |
https://www.googleapis.com/auth/youtube.readonly | ดูบัญชี YouTube ของคุณ |
https://www.googleapis.com/auth/youtube.upload | จัดการวิดีโอ YouTube ของคุณ |
https://www.googleapis.com/auth/youtubepartner | ดูและจัดการพื้นที่ของคุณและเนื้อหาที่เกี่ยวข้องใน YouTube |
https://www.googleapis.com/auth/youtubepartner-channel-audit | ดูข้อมูลส่วนตัวของช่อง YouTube ของคุณที่เกี่ยวข้องในระหว่างกระบวนการตรวจสอบกับพาร์ทเนอร์ YouTube |
เอกสารขอบเขต API ของ OAuth 2.0 จะมีข้อมูลแบบเต็ม รายการขอบเขตที่คุณอาจใช้เพื่อเข้าถึง Google APIs
การได้รับโทเค็นเพื่อการเข้าถึง OAuth 2.0
ขั้นตอนต่อไปนี้แสดงวิธีที่แอปพลิเคชันของคุณโต้ตอบกับเซิร์ฟเวอร์ OAuth 2.0 ของ Google ความยินยอมของผู้ใช้ในการส่งคำขอ API ในนามของผู้ใช้ แอปพลิเคชันของคุณต้องมี ยินยอมก่อน จึงจะดำเนินการตามคำขอ Google API ที่ต้องมีการให้สิทธิ์จากผู้ใช้ได้
ขั้นตอนที่ 1: สร้างตัวตรวจสอบโค้ดและการยืนยันตัวตน
Google รองรับคีย์พิสูจน์สำหรับการแลกเปลี่ยนโค้ด (PKCE) เพื่อให้โฟลว์แอปที่ติดตั้งมีความปลอดภัยยิ่งขึ้น ระบบจะสร้างตัวตรวจสอบโค้ดที่ไม่ซ้ำกันขึ้นสำหรับ คำขอการให้สิทธิ์ และค่าที่เปลี่ยนรูปแบบแล้วซึ่งเรียกว่า "code_challenge" จะส่งไปยัง เซิร์ฟเวอร์การให้สิทธิ์เพื่อรับรหัสการให้สิทธิ์
สร้างตัวตรวจสอบโค้ด
code_verifier
เป็นสตริงแบบสุ่มที่มีการเข้ารหัสแบบเอนโทรปีสูงโดยใช้สตริงที่ไม่ได้สงวนไว้
อักขระ [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~" มีความยาวอย่างน้อย 43 อักขระ
และมีความยาวได้สูงสุด 128 อักขระ
ตัวตรวจสอบโค้ดควรมีเอนโทรปีเพียงพอที่จะทำให้ไม่สามารถคาดเดาค่าได้จริง
สร้างระบบทดสอบโค้ด
ระบบรองรับการทดสอบโค้ด 2 วิธีด้วยกัน
วิธีการสร้างชาเลนจ์โค้ด | |
---|---|
S256 (แนะนำ) | ระบบทดสอบโค้ดคือแฮช SHA256 ที่เข้ารหัส Base64URL (ไม่มีระยะห่างจากขอบ) ของโค้ด
เครื่องมือตรวจสอบ
|
ธรรมดา | การทดสอบโค้ดเป็นค่าเดียวกันกับตัวตรวจสอบโค้ดที่สร้างขึ้นข้างต้น
|
ขั้นตอนที่ 2: ส่งคำขอไปยังเซิร์ฟเวอร์ OAuth 2.0 ของ Google
ในการรับการให้สิทธิ์จากผู้ใช้ ให้ส่งคำขอไปยังเซิร์ฟเวอร์การให้สิทธิ์ของ Google ที่
https://accounts.google.com/o/oauth2/v2/auth
ปลายทางนี้จัดการการค้นหาเซสชันที่ใช้งานอยู่
ตรวจสอบสิทธิ์ผู้ใช้และได้รับความยินยอมจากผู้ใช้ ปลายทางจะเข้าถึงได้ผ่าน SSL เท่านั้น
ปฏิเสธการเชื่อมต่อ HTTP (ไม่ใช่ SSL)
เซิร์ฟเวอร์การให้สิทธิ์สนับสนุนพารามิเตอร์สตริงข้อความค้นหาต่อไปนี้สำหรับการติดตั้ง แอปพลิเคชัน:
พารามิเตอร์ | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
client_id |
จำเป็น
รหัสไคลเอ็นต์สำหรับแอปพลิเคชันของคุณ คุณสามารถค้นหาค่านี้ใน API Console Credentials page |
||||||||||||||||
redirect_uri |
จำเป็น
กำหนดวิธีที่เซิร์ฟเวอร์การให้สิทธิ์ของ Google ส่งการตอบกลับไปยังแอปของคุณ มี ตัวเลือกการเปลี่ยนเส้นทางมากมายที่มีให้กับแอปที่ติดตั้งไว้ และคุณจะได้ตั้งค่า ข้อมูลเข้าสู่ระบบการให้สิทธิ์ กับวิธีการเปลี่ยนเส้นทางเฉพาะ ของเรา ค่าต้องตรงกับ URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตรายการใดรายการหนึ่งสำหรับ OAuth 2.0
ซึ่งคุณกำหนดค่าในบัญชี
API Console
Credentials pageหากค่านี้ไม่ตรงกับ
URI ที่ได้รับอนุญาต คุณจะได้รับข้อผิดพลาด ตารางด้านล่างแสดงค่าพารามิเตอร์
|
||||||||||||||||
response_type |
จำเป็น
กำหนดว่าปลายทาง Google OAuth 2.0 ส่งรหัสการให้สิทธิ์กลับมาหรือไม่ ตั้งค่าพารามิเตอร์เป็น |
||||||||||||||||
scope |
จำเป็น
ต คั่นด้วยช่องว่าง รายการขอบเขตที่ระบุทรัพยากรที่แอปพลิเคชันของคุณสามารถเข้าถึงได้ ในนามของผู้ใช้ ค่าเหล่านี้จะบอกหน้าจอความยินยอมที่ Google จะแสดงต่อ ผู้ใช้ ขอบเขตช่วยให้แอปพลิเคชันขอเข้าถึงเฉพาะทรัพยากรที่จำเป็นต้องใช้เท่านั้น ขณะเดียวกันก็ช่วยให้ผู้ใช้สามารถควบคุมปริมาณการเข้าถึงที่จะจำกัด แอปพลิเคชัน ดังนั้นจึงจะมีความสัมพันธ์แบบผกผันระหว่างจำนวนขอบเขตที่ขอ และแนวโน้มที่จะได้รับความยินยอมจากผู้ใช้ YouTube Data API v3 ใช้ขอบเขตต่อไปนี้
เอกสารขอบเขต API ของ OAuth 2.0 จะให้ข้อมูล รายการขอบเขตทั้งหมดที่คุณอาจใช้เพื่อเข้าถึง Google APIs |
||||||||||||||||
code_challenge |
แนะนำ
ระบุ |
||||||||||||||||
code_challenge_method |
แนะนำ
ระบุวิธีการที่ใช้ในการเข้ารหัส |
||||||||||||||||
state |
แนะนำ
ระบุค่าสตริงที่แอปพลิเคชันใช้เพื่อรักษาสถานะระหว่าง
คำขอการให้สิทธิ์ และการตอบกลับของเซิร์ฟเวอร์การให้สิทธิ์
เซิร์ฟเวอร์จะแสดงผลค่าที่แน่นอนที่คุณส่งเป็นคู่ คุณสามารถใช้พารามิเตอร์นี้เพื่อวัตถุประสงค์หลายประการ เช่น เพื่อนําผู้ใช้ไปยัง
ทรัพยากรที่ถูกต้องในแอปพลิเคชัน การส่ง nonces และการลดคำขอข้ามเว็บไซต์
หน้าปลอมแปลง เนื่องจากคุณสามารถเดา |
||||||||||||||||
login_hint |
ไม่บังคับ
หากแอปพลิเคชันทราบว่าผู้ใช้ใดกำลังตรวจสอบสิทธิ์ แอปพลิเคชันจะใช้พารามิเตอร์นี้ได้ เพื่อให้คำแนะนำเกี่ยวกับเซิร์ฟเวอร์การตรวจสอบสิทธิ์ของ Google เซิร์ฟเวอร์จะใช้คำแนะนำเพื่อ ลดความซับซ้อนของขั้นตอนการเข้าสู่ระบบโดยกรอกข้อมูลในช่องอีเมลไว้ล่วงหน้าในแบบฟอร์มลงชื่อเข้าใช้หรือโดย ที่เลือกเซสชันการลงชื่อเข้าใช้หลายบัญชีที่เหมาะสม ตั้งค่าพารามิเตอร์เป็นอีเมลหรือตัวระบุ |
ตัวอย่าง URL การให้สิทธิ์
แท็บด้านล่างแสดงตัวอย่าง URL การให้สิทธิ์สำหรับตัวเลือก URI การเปลี่ยนเส้นทางที่แตกต่างกัน
แต่ละ URL จะขอเข้าถึงขอบเขตที่อนุญาตให้เข้าถึงเพื่อดู บัญชี YouTube ของคุณURL จะเหมือนกันยกเว้นค่าของพารามิเตอร์ redirect_uri
URL
ยังมีพารามิเตอร์ response_type
และ client_id
ที่จำเป็นด้วย
เป็นพารามิเตอร์ state
ที่ไม่บังคับ แต่ละ URL จะมีตัวแบ่งบรรทัดและช่องว่างสำหรับ
ความอ่านง่าย
รูปแบบ URI ที่กำหนดเอง
https://accounts.google.com/o/oauth2/v2/auth? scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly& response_type=code& state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken& redirect_uri=com.example.app%3A/oauth2redirect& client_id=client_id
ที่อยู่ IP แบบ Loopback
https://accounts.google.com/o/oauth2/v2/auth? scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly& response_type=code& state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken& redirect_uri=http%3A//127.0.0.1%3A9004& client_id=client_id
ขั้นตอนที่ 3: Google แจ้งขอความยินยอมจากผู้ใช้
ในขั้นตอนนี้ ผู้ใช้จะเป็นผู้ตัดสินใจว่าจะให้สิทธิ์เข้าถึงตามคำขอแก่แอปพลิเคชันของคุณหรือไม่ เวลานี้ ขั้นตอน Google จะแสดงหน้าต่างความยินยอมที่แสดงชื่อแอปพลิเคชันและ Google API ที่ขอสิทธิ์ในการเข้าถึงด้วยข้อมูลเข้าสู่ระบบการให้สิทธิ์ของผู้ใช้ สรุปขอบเขตการเข้าถึงที่จะให้สิทธิ์ ผู้ใช้สามารถให้ความยินยอมในการให้สิทธิ์เข้าถึงขอบเขตอย่างน้อย 1 รายการที่แอปพลิเคชันขอ หรือ ปฏิเสธคำขอ
แอปพลิเคชันของคุณไม่จําเป็นต้องดําเนินการใดๆ ในขั้นตอนนี้ เนื่องจากจะรอการตอบกลับจาก เซิร์ฟเวอร์ OAuth 2.0 ของ Google ที่ระบุว่ามีการให้สิทธิ์การเข้าถึงหรือไม่ คำตอบนั้นจะอธิบายไว้ใน ขั้นตอนต่อไปนี้
ข้อผิดพลาด
คำขอไปยังปลายทางการให้สิทธิ์ OAuth 2.0 ของ Google อาจแสดงข้อความแสดงข้อผิดพลาดที่แสดงต่อผู้ใช้ แทนขั้นตอนการตรวจสอบสิทธิ์และการให้สิทธิ์ที่คาดไว้ รหัสข้อผิดพลาดที่พบบ่อยและข้อผิดพลาดที่แนะนำ วิธีแก้ปัญหามีดังนี้
admin_policy_enforced
บัญชี Google ให้สิทธิ์ขอบเขตอย่างน้อย 1 รายการที่ขอไม่ได้เนื่องจากนโยบายของ ผู้ดูแลระบบ Google Workspace ดูบทความช่วยเหลือสำหรับผู้ดูแลระบบ Google Workspace กำหนดบุคคลที่สามและ แอปภายในเข้าถึงข้อมูล Google Workspace สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ผู้ดูแลระบบอาจจำกัดการเข้าถึง ขอบเขตทั้งหมดหรือข้อมูลที่ละเอียดอ่อน ขอบเขตที่จํากัดจนกว่าจะมีการให้สิทธิ์เข้าถึงรหัสไคลเอ็นต์ OAuth อย่างชัดเจน
disallowed_useragent
ปลายทางการให้สิทธิ์แสดงภายใน User Agent แบบฝังซึ่ง Google ไม่อนุญาต นโยบาย OAuth 2.0
Android
นักพัฒนาแอป Android อาจพบข้อความแสดงข้อผิดพลาดนี้เมื่อเปิดคำขอการให้สิทธิ์ใน
android.webkit.WebView
นักพัฒนาแอปควรใช้ไลบรารี Android แทน เช่น
Google Sign-In สำหรับ Android หรือ
AppAuth สำหรับ Android
นักพัฒนาเว็บอาจพบข้อผิดพลาดนี้เมื่อแอป Android เปิดเว็บลิงก์ทั่วไปใน User Agent ที่ฝังและผู้ใช้ไปยังปลายทางการให้สิทธิ์ OAuth 2.0 ของ Google จาก เว็บไซต์ของคุณ นักพัฒนาควรอนุญาตให้ลิงก์ทั่วไปเปิดในเครื่องจัดการลิงก์เริ่มต้นของ ซึ่งมีทั้ง ลิงก์แอป Android หรือแอปเบราว์เซอร์เริ่มต้น แท็บที่กำหนดเองของ Android ก็เป็นตัวเลือกที่รองรับเช่นกัน
iOS
นักพัฒนา iOS และ macOS อาจพบข้อผิดพลาดนี้เมื่อเปิดคำขอการให้สิทธิ์ใน
WKWebView
นักพัฒนาซอฟต์แวร์ควรใช้ไลบรารี iOS แทน เช่น
Google Sign-In สำหรับ iOS หรือ OpenID Foundation
AppAuth สำหรับ iOS
นักพัฒนาเว็บอาจพบข้อผิดพลาดนี้เมื่อแอป iOS หรือ macOS เปิดเว็บลิงก์ทั่วไปใน
User Agent ที่ฝังและผู้ใช้ไปยังปลายทางการให้สิทธิ์ OAuth 2.0 ของ Google จาก
เว็บไซต์ของคุณ นักพัฒนาควรอนุญาตให้ลิงก์ทั่วไปเปิดในเครื่องจัดการลิงก์เริ่มต้นของ
ซึ่งมีทั้ง
Universal Link
หรือแอปเบราว์เซอร์เริ่มต้น
SFSafariViewController
ก็เป็นตัวเลือกที่รองรับเช่นกัน
org_internal
รหัสไคลเอ็นต์ OAuth ในคำขอเป็นส่วนหนึ่งของโปรเจ็กต์ที่จำกัดการเข้าถึงบัญชี Google ใน เฉพาะ Google Cloud Organization สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการกำหนดค่านี้ โปรดดู ประเภทผู้ใช้ ในบทความช่วยเหลือการตั้งค่าหน้าจอขอความยินยอม OAuth
invalid_grant
หากคุณใช้
ตัวตรวจสอบโค้ดและ
คำถาม พารามิเตอร์ code_callenge
ไม่ถูกต้องหรือขาดหายไป ตรวจสอบว่า
ตั้งค่าพารามิเตอร์ code_challenge
อย่างถูกต้องแล้ว
เมื่อรีเฟรชโทเค็นเพื่อการเข้าถึง โทเค็นอาจหมดอายุหรือ ใช้ไม่ได้แล้ว ตรวจสอบสิทธิ์ผู้ใช้อีกครั้งและขอความยินยอมจากผู้ใช้เพื่อรับโทเค็นใหม่ หากคุณดำเนินการต่อ พบข้อผิดพลาดนี้ โปรดตรวจสอบว่าได้กำหนดค่าแอปพลิเคชันอย่างถูกต้อง และคุณ โดยใช้โทเค็นและพารามิเตอร์ที่ถูกต้องในคำขอ มิฉะนั้น บัญชีผู้ใช้ ถูกลบหรือปิดใช้งานไปแล้ว
redirect_uri_mismatch
redirect_uri
ที่ส่งผ่านในคำขอการให้สิทธิ์ไม่ตรงกับรายการที่ได้รับอนุญาต
URI การเปลี่ยนเส้นทางสำหรับรหัสไคลเอ็นต์ OAuth ตรวจสอบ URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตใน
Google API Console Credentials page
redirect_uri
ที่ส่งอาจไม่ถูกต้องสำหรับประเภทไคลเอ็นต์
พารามิเตอร์ redirect_uri
อาจอ้างถึงขั้นตอนนอกย่านความถี่ (OOB) ของ OAuth ที่
เลิกใช้งานแล้วและไม่มีการรองรับอีกต่อไป โปรดดู
คำแนะนำในการย้ายข้อมูลเพื่ออัปเดต
การผสานรวม
invalid_request
เกิดข้อผิดพลาดบางอย่างกับคำขอของคุณ ซึ่งอาจเกิดจากสาเหตุหลายประการ ดังนี้
- รูปแบบคำขอไม่ถูกต้อง
- คำขอไม่มีพารามิเตอร์ที่จำเป็น
- คำขอใช้วิธีการให้สิทธิ์ที่ Google ไม่รองรับ ยืนยัน OAuth จะใช้วิธีการผสานรวมที่แนะนำ
- ชุดรูปแบบที่กำหนดเองใช้สำหรับ URI การเปลี่ยนเส้นทาง : หากคุณเห็นข้อความแสดงข้อผิดพลาด แอป Chrome หรือรูปแบบ URI ที่กำหนดเองไม่รองรับชุดรูปแบบ URI ที่กำหนดเอง ไม่ได้เปิดใช้สำหรับไคลเอ็นต์ Android ของคุณ แสดงว่าคุณกำลังใช้ URI ที่กำหนดเอง สคีม ซึ่งแอป Chrome ไม่รองรับและถูกปิดโดยค่าเริ่มต้นใน Android ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบ URI ที่กำหนดเอง ทางเลือก
ขั้นตอนที่ 4: จัดการการตอบกลับของเซิร์ฟเวอร์ OAuth 2.0
วิธีที่แอปพลิเคชันของคุณได้รับการตอบกลับการให้สิทธิ์จะขึ้นอยู่กับ
รูปแบบ URI การเปลี่ยนเส้นทางที่ใช้ ไม่ว่าจะเป็นรูปแบบใด
การตอบกลับจะมีรหัสการให้สิทธิ์ (code
) หรือข้อผิดพลาด
(error
) ตัวอย่างเช่น error=access_denied
จะระบุว่าผู้ใช้
ปฏิเสธคำขอ
ถ้าผู้ใช้ให้สิทธิ์เข้าถึงแอปพลิเคชันของคุณ คุณสามารถแลกเปลี่ยนรหัสการให้สิทธิ์สำหรับ โทเค็นเพื่อการเข้าถึง และโทเค็นการรีเฟรชตามที่อธิบายไว้ในขั้นตอนถัดไป
ขั้นตอนที่ 5: รหัสการให้สิทธิ์ของ Exchange สำหรับการรีเฟรชและการเข้าถึง โทเค็น
หากต้องการแลกเปลี่ยนรหัสการให้สิทธิ์สำหรับโทเค็นเพื่อการเข้าถึง โปรดเรียก
https://oauth2.googleapis.com/token
ปลายทาง แล้วตั้งค่าพารามิเตอร์ต่อไปนี้
ช่อง | |
---|---|
client_id |
รหัสไคลเอ็นต์ที่ได้รับจาก API Console Credentials page |
client_secret |
รหัสลับไคลเอ็นต์ที่ได้รับจาก API Console Credentials page |
code |
รหัสการให้สิทธิ์ที่ส่งคืนจากคำขอเริ่มต้น |
code_verifier |
ตัวตรวจสอบโค้ดที่คุณสร้าง ขั้นตอนที่ 1 |
grant_type |
ตามที่ให้คำจำกัดความไว้ใน OAuth 2.0
ข้อมูลจำเพาะ ค่าของช่องนี้ต้องตั้งค่าเป็น authorization_code |
redirect_uri |
หนึ่งใน URI การเปลี่ยนเส้นทางที่แสดงอยู่สำหรับโครงการของคุณใน
API Console
Credentials page สำหรับ
client_id |
ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างคำขอ
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7& client_id=your_client_id& client_secret=your_client_secret& redirect_uri=http://127.0.0.1:9004& grant_type=authorization_code
Google ตอบสนองต่อคำขอนี้โดยแสดงผลออบเจ็กต์ JSON ที่มีการเข้าถึงเป็นระยะเวลาสั้นๆ และโทเค็นการรีเฟรช
คำตอบจะมีช่องต่อไปนี้
ช่อง | |
---|---|
access_token |
โทเค็นที่แอปพลิเคชันของคุณส่งเพื่อให้สิทธิ์คำขอ Google API |
expires_in |
อายุการใช้งานที่เหลือของโทเค็นเพื่อการเข้าถึงเป็นวินาที |
id_token |
หมายเหตุ: ระบบจะแสดงผลพร็อพเพอร์ตี้นี้เมื่อคำขอมีขอบเขตข้อมูลประจำตัวเท่านั้น
เช่น openid , profile หรือ email ค่าคือ
JSON Web Token (JWT) ที่มีข้อมูลประจำตัวที่ลงนามแบบดิจิทัลเกี่ยวกับ
ผู้ใช้ |
refresh_token |
โทเค็นที่คุณสามารถใช้เพื่อรับโทเค็นเพื่อการเข้าถึงใหม่ โทเค็นการรีเฟรชจะใช้ได้จนถึง ผู้ใช้เพิกถอนการเข้าถึง โปรดทราบว่าระบบจะส่งคืนโทเค็นการรีเฟรชสำหรับแอปพลิเคชันที่ติดตั้งไว้เสมอ |
scope |
ขอบเขตการเข้าถึงที่ access_token อนุญาตซึ่งแสดงเป็นรายการ
สตริงที่คั่นด้วยช่องว่างและคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ |
token_type |
ประเภทของโทเค็นที่แสดงผล ปัจจุบัน ค่าของช่องนี้จะกำหนดไว้เป็น
Bearer |
ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างคำตอบ
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "token_type": "Bearer", "scope": "https://www.googleapis.com/auth/youtube.force-ssl", "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }
การเรียกใช้ Google APIs
หลังจากแอปพลิเคชันได้รับโทเค็นเพื่อการเข้าถึงแล้ว คุณจะสามารถใช้โทเค็นดังกล่าวเพื่อเรียกไปยัง
API ในนามของ
บัญชีผู้ใช้ หากได้มีการให้สิทธิ์สำหรับขอบเขตการเข้าถึงที่ API กำหนด วิธีการคือ
โทเค็นเพื่อการเข้าถึงในคำขอที่ส่งไปยัง API โดยรวมคำค้นหา access_token
หรือค่า Bearer
ของส่วนหัว HTTP Authorization
เมื่อทำได้
ส่วนหัว HTTP ดีกว่า เนื่องจากสตริงการค้นหามักจะมองเห็นได้ในบันทึกของเซิร์ฟเวอร์ ส่วนใหญ่
คุณสามารถใช้ไลบรารีของไคลเอ็นต์เพื่อตั้งค่าการเรียก Google APIs (เช่น เมื่อ
การเรียกใช้ YouTube Data API)
โปรดทราบว่า API ข้อมูลของ YouTube รองรับเฉพาะบัญชีบริการสำหรับ YouTube เท่านั้น เจ้าของเนื้อหาที่เป็นเจ้าของและจัดการช่อง YouTube หลายช่อง เช่น บันทึก และสตูดิโอภาพยนตร์
คุณสามารถทดลองใช้ Google API ทั้งหมดและดูขอบเขตของ API เหล่านี้ได้ที่ OAuth 2.0 Playground
ตัวอย่าง HTTP GET
การเรียกไปยัง
youtube.channels
ปลายทาง (YouTube Data API) ที่ใช้ Authorization: Bearer
HTTP
ส่วนหัวอาจมีลักษณะดังต่อไปนี้ โปรดทราบว่าคุณต้องระบุโทเค็นเพื่อการเข้าถึงของคุณเอง
GET /youtube/v3/channels?part=snippet&mine=true HTTP/1.1 Host: www.googleapis.com Authorization: Bearer access_token
นี่คือการเรียก API เดียวกันสำหรับผู้ใช้ที่ตรวจสอบสิทธิ์แล้วโดยใช้ access_token
พารามิเตอร์สตริงการค้นหา:
GET https://www.googleapis.com/youtube/v3/channels?access_token=access_token&part=snippet&mine=true
ตัวอย่างของ curl
ทดสอบคำสั่งเหล่านี้ได้ด้วยแอปพลิเคชันบรรทัดคำสั่ง curl
นี่คือ
ตัวอย่างที่ใช้ตัวเลือกส่วนหัว HTTP (แนะนำ)
curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true
หรือใช้ตัวเลือกพารามิเตอร์สตริงคำค้นหาดังนี้
curl https://www.googleapis.com/youtube/v3/channels?access_token=access_token&part=snippet&mine=true
การรีเฟรชโทเค็นเพื่อการเข้าถึง
โทเค็นเพื่อการเข้าถึงจะหมดอายุเป็นระยะๆ และกลายเป็นข้อมูลเข้าสู่ระบบที่ไม่ถูกต้องสําหรับคําขอ API ที่เกี่ยวข้อง คุณ สามารถรีเฟรชโทเค็นเพื่อการเข้าถึงโดยไม่ต้องแจ้งสิทธิ์จากผู้ใช้ (รวมถึงเมื่อผู้ใช้ ไม่ปรากฏ) ถ้าคุณขอสิทธิ์เข้าถึงขอบเขตแบบออฟไลน์ที่เชื่อมโยงกับโทเค็น
หากต้องการรีเฟรชโทเค็นเพื่อการเข้าถึง แอปพลิเคชันจะส่ง HTTPS POST
ไปยังเซิร์ฟเวอร์การให้สิทธิ์ของ Google (https://oauth2.googleapis.com/token
) ซึ่ง
ประกอบด้วยพารามิเตอร์ต่อไปนี้
ช่อง | |
---|---|
client_id |
รหัสไคลเอ็นต์ที่ได้รับจาก API Console |
client_secret |
รหัสลับไคลเอ็นต์ที่ได้รับจาก API Console
(client_secret ใช้ไม่ได้กับคำขอจากลูกค้าที่ลงทะเบียนเป็น
แอปพลิเคชัน Android, iOS หรือ Chrome)
|
grant_type |
อาส
ที่มีคำจำกัดความใน
OAuth 2.0
ต้องกำหนดค่าของช่องนี้เป็น refresh_token |
refresh_token |
โทเค็นการรีเฟรชที่แสดงผลจากการแลกเปลี่ยนรหัสการให้สิทธิ์ |
ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างคำขอ
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded client_id=your_client_id& client_secret=your_client_secret& refresh_token=refresh_token& grant_type=refresh_token
หากผู้ใช้ยังไม่ได้เพิกถอนการเข้าถึงที่ให้แก่แอปพลิเคชัน เซิร์ฟเวอร์โทเค็น แสดงผลออบเจ็กต์ JSON ที่มีโทเค็นเพื่อการเข้าถึงใหม่ ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่าง การตอบกลับ:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "scope": "https://www.googleapis.com/auth/drive.metadata.readonly", "token_type": "Bearer" }
โปรดทราบว่าการออกโทเค็นการรีเฟรชมีขีดจำกัด 1 ขีดจำกัดต่อ ชุดค่าผสมของลูกค้า/ผู้ใช้ และอีกชุดหนึ่งต่อผู้ใช้สำหรับลูกค้าทั้งหมด คุณควรบันทึกโทเค็นการรีเฟรช ในพื้นที่เก็บข้อมูลระยะยาวและใช้งานต่อไปตราบเท่าที่ยังใช้ได้ หากแอปพลิเคชันของคุณ ส่งคำขอโทเค็นการรีเฟรชมากเกินไป โทเค็นอาจเกินขีดจำกัดเหล่านี้ ซึ่งในกรณีนี้โทเค็นการรีเฟรชเก่า จะหยุดทำงาน
การเพิกถอนโทเค็น
ในบางกรณี ผู้ใช้อาจต้องการเพิกถอนสิทธิ์เข้าถึงแอปพลิเคชัน ผู้ใช้สามารถเพิกถอนสิทธิ์เข้าถึงได้ โดยไปที่ การตั้งค่าบัญชี โปรดดู ลบ ส่วนการเข้าถึงเว็บไซต์หรือแอปของเว็บไซต์บุคคลที่สามและ แอปที่มีสิทธิ์เข้าถึงบัญชีของคุณ สำหรับข้อมูลเพิ่มเติมได้
นอกจากนี้ แอปพลิเคชันยังอาจเพิกถอนสิทธิ์เข้าถึงที่ให้ไว้ทางโปรแกรมได้อีกด้วย การเพิกถอนแบบเป็นโปรแกรมมีความสำคัญในกรณีที่ผู้ใช้ยกเลิกการสมัคร นำ หรือทรัพยากร API ที่แอปต้องใช้ได้เปลี่ยนแปลงไปอย่างมาก กล่าวคือ อาจมีคำขอ API เพื่อให้มั่นใจว่าสิทธิ์ต่างๆ ก่อนหน้านี้ สำหรับแอปพลิเคชันนั้นจะถูกนำออก
หากต้องการเพิกถอนโทเค็นแบบเป็นโปรแกรม แอปพลิเคชันของคุณจะส่งคำขอไปยัง
https://oauth2.googleapis.com/revoke
และรวมโทเค็นเป็นพารามิเตอร์
curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \ https://oauth2.googleapis.com/revoke?token={token}
ซึ่งโทเค็นดังกล่าวอาจเป็นโทเค็นเพื่อการเข้าถึงหรือโทเค็นการรีเฟรชก็ได้ ถ้าโทเค็นเป็นโทเค็นเพื่อการเข้าถึงและ โทเค็นการรีเฟรชที่ตรงกัน โทเค็นการรีเฟรชจะถูกเพิกถอนไปด้วย
หากการเพิกถอนได้รับการประมวลผลเรียบร้อยแล้ว รหัสสถานะ HTTP ของการตอบกลับจะเป็น
200
สำหรับเงื่อนไขข้อผิดพลาด ระบบจะส่งรหัสสถานะ HTTP 400
กลับมา
ที่มีรหัสข้อผิดพลาด
อ่านเพิ่มเติม
หลักปฏิบัติปัจจุบันของ IETF OAuth 2.0 สำหรับ แอปที่มาพร้อมเครื่องมีแนวทางปฏิบัติแนะนำมากมายที่ระบุไว้ในเอกสารฉบับนี้
การใช้การป้องกันแบบครอบคลุมหลายบริการ
ขั้นตอนเพิ่มเติมที่คุณควรทำเพื่อปกป้องผู้ใช้ของคุณ บัญชีกำลังใช้ข้ามบัญชี ป้องกันโดยใช้บริการการป้องกันแบบครอบคลุมหลายบริการของ Google บริการนี้ช่วยให้คุณ สมัครรับการแจ้งเตือนเกี่ยวกับการดำเนินการด้านความปลอดภัย ซึ่งจะให้ข้อมูลเกี่ยวกับแอปพลิเคชันของคุณเกี่ยวกับ การเปลี่ยนแปลงที่สำคัญในบัญชีผู้ใช้ จากนั้นคุณสามารถใช้ข้อมูลดังกล่าวเพื่อดำเนินการต่างๆ โดย วิธีตัดสินใจตอบสนองต่อเหตุการณ์
ตัวอย่างประเภทเหตุการณ์ที่บริการการป้องกันแบบครอบคลุมหลายบริการของ Google ส่งไปยังแอปของคุณ ได้แก่
-
https://schemas.openid.net/secevent/risc/event-type/sessions-revoked
-
https://schemas.openid.net/secevent/oauth/event-type/token-revoked
-
https://schemas.openid.net/secevent/risc/event-type/account-disabled
โปรดดู ปกป้องบัญชีผู้ใช้ด้วยหน้าการป้องกันแบบครอบคลุมหลายบริการ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้การป้องกันแบบครอบคลุมหลายบริการและรายการเหตุการณ์ทั้งหมดที่มี