เอกสารนี้อธิบายวิธีที่แอปพลิเคชันซึ่งติดตั้งในอุปกรณ์ต่างๆ เช่น โทรศัพท์ แท็บเล็ต และ คอมพิวเตอร์ ใช้ปลายทาง OAuth 2.0 ของ Google เพื่อให้สิทธิ์เข้าถึง YouTube Analytics API หรือ YouTube Reporting API
OAuth 2.0 อนุญาตให้ผู้ใช้แชร์ข้อมูลบางอย่างกับแอปพลิเคชันโดยที่ยังเก็บชื่อผู้ใช้ รหัสผ่าน และข้อมูลอื่นๆ ไว้เป็นส่วนตัว เช่น แอปพลิเคชันสามารถใช้ OAuth 2.0 เพื่อขอรับสิทธิ์ ในการดึงข้อมูลวิเคราะห์ YouTube ของช่อง
ระบบจะกระจายแอปที่ติดตั้งไปยังอุปกรณ์แต่ละเครื่อง และถือว่าแอปเหล่านี้ ไม่สามารถเก็บความลับได้ โดยจะเข้าถึง Google API ได้ในขณะที่ผู้ใช้อยู่ในแอปหรือเมื่อแอปทำงานอยู่เบื้องหลัง
ขั้นตอนการให้สิทธิ์นี้คล้ายกับขั้นตอนที่ใช้สำหรับ แอปพลิเคชันเว็บเซิร์ฟเวอร์ ความแตกต่างหลักคือ แอปที่ติดตั้งจะต้องเปิดเบราว์เซอร์ของระบบและระบุ URI เปลี่ยนเส้นทางในเครื่องเพื่อจัดการ การตอบกลับจากเซิร์ฟเวอร์การให้สิทธิ์ของ Google
ไลบรารีและตัวอย่าง
สำหรับแอป iOS เราขอแนะนำให้ใช้ Sign In With Google iOS SDK เวอร์ชันล่าสุด SDK จะจัดการการให้สิทธิ์ผู้ใช้และติดตั้งใช้งานได้ง่ายกว่า โปรโตคอลระดับล่างที่อธิบายไว้ในคู่มือนี้
สำหรับแอปที่ทำงานในอุปกรณ์ที่ไม่รองรับเบราว์เซอร์ของระบบหรือมี ความสามารถในการป้อนข้อมูลที่จำกัด เช่น ทีวี เกมคอนโซล กล้อง หรือเครื่องพิมพ์ โปรดดู 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.
- ใช้หน้าคลังเพื่อค้นหาและเปิดใช้ API ของข้อมูลวิเคราะห์ YouTube และ Reporting API ของ YouTube แอปพลิเคชันจำนวนมากที่ดึงข้อมูลวิเคราะห์ YouTube ยังเชื่อมต่อกับ YouTube Data API ด้วย ค้นหา API อื่นๆ ที่แอปพลิเคชันของคุณจะใช้และเปิดใช้ API เหล่านั้นด้วย
สร้างข้อมูลเข้าสู่ระบบการให้สิทธิ์
แอปพลิเคชันที่ใช้ OAuth 2.0 เพื่อเข้าถึง Google APIs ต้องมีข้อมูลเข้าสู่ระบบการให้สิทธิ์ ที่ระบุแอปพลิเคชันไปยังเซิร์ฟเวอร์ OAuth 2.0 ของ Google ขั้นตอนต่อไปนี้จะอธิบายวิธี สร้างข้อมูลเข้าสู่ระบบสำหรับโปรเจ็กต์ จากนั้นแอปพลิเคชันจะใช้ข้อมูลเข้าสู่ระบบเพื่อเข้าถึง API ที่คุณเปิดใช้สำหรับโปรเจ็กต์นั้นได้
- Go to the Clients page.
- คลิกสร้างไคลเอ็นต์
- ส่วนต่อไปนี้จะอธิบายประเภทไคลเอ็นต์ที่เซิร์ฟเวอร์การให้สิทธิ์ของ Google รองรับ เลือกประเภทไคลเอ็นต์ที่แนะนําสําหรับ แอปพลิเคชัน ตั้งชื่อไคลเอ็นต์ OAuth และตั้งค่าช่องอื่นๆ ในแบบฟอร์มตาม ความเหมาะสม
iOS
- เลือกประเภทแอปพลิเคชัน iOS
- ป้อนชื่อสำหรับไคลเอ็นต์ OAuth ชื่อนี้จะแสดงใน Clients page ของโปรเจ็กต์เพื่อระบุไคลเอ็นต์
- ป้อนตัวระบุบันเดิลสำหรับแอปของคุณ รหัสบันเดิลคือค่าของคีย์ CFBundleIdentifier ในไฟล์ทรัพยากรรายการคุณสมบัติข้อมูลของแอปของคุณ (info.plist) โดยทั่วไปแล้ว ค่านี้จะแสดงอยู่ในส่วนทั่วไป (General pane) หรือส่วนการลงนามและคุณสมบัติ (Signing & Capabilities pane) ของโปรแกรมแก้ไขโปรเจ็กต์ Xcode นอกจากนี้ ระบบยังแสดงรหัส Bundle ในส่วนข้อมูลทั่วไปของ
หน้าข้อมูลแอปสำหรับแอปใน
เว็บไซต์ App Store Connect ของ Apple ด้วย
ยืนยันว่าคุณใช้ Bundle ID ที่ถูกต้องสำหรับแอป เนื่องจากคุณจะเปลี่ยน Bundle ID ไม่ได้หากใช้ฟีเจอร์ App Check
- (ไม่บังคับ)
ป้อนรหัส App Store ของแอป หากเผยแพร่แอปใน App Store ของ Apple รหัสร้านค้า คือสตริงตัวเลขที่รวมอยู่ใน URL ของ Apple App Store ทุกรายการ
- เปิด แอป Apple App Store ในอุปกรณ์ iOS หรือ iPadOS
- ค้นหาแอปของคุณ
- เลือกปุ่มแชร์ (สัญลักษณ์สี่เหลี่ยมและลูกศรชี้ขึ้น)
- เลือกคัดลอกลิงก์
- วางลิงก์ลงในเครื่องมือแก้ไขข้อความ รหัส App Store คือส่วนสุดท้ายของ URL
ตัวอย่าง:
https://apps.apple.com/app/google/id284815942
- (ไม่บังคับ)
ป้อนรหัสทีม ดูข้อมูลเพิ่มเติมได้ที่ ค้นหา Team ID ในเอกสารประกอบของบัญชีนักพัฒนาแอป Apple
หมายเหตุ: คุณต้องระบุฟิลด์รหัสทีมหากเปิดใช้ App Check สำหรับไคลเอ็นต์ - (ไม่บังคับ)
เปิดใช้งาน App Check สำหรับแอป iOS ของคุณ เมื่อคุณเปิดใช้งาน App Check บริการ App Attest ของ Apple App Attest จะถูกใช้เพื่อตรวจสอบว่าคำขอ OAuth 2.0 ที่มาจากไคลเอ็นต์ OAuth ของคุณนั้นเป็นของแท้และมาจากแอปของคุณ ซึ่งจะช่วยลดความเสี่ยงในการปลอมแปลงแอป ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปิดใช้ App Check สำหรับแอป iOS
- คลิกสร้าง
UWP
- เลือกประเภทแอปพลิเคชัน Universal Windows Platform
- ป้อนชื่อสำหรับไคลเอ็นต์ OAuth ชื่อนี้จะแสดงบน Clients page ของโครงการของคุณเพื่อระบุลูกค้า
- ป้อนรหัส Microsoft Store ID 12 ตัวอักษรของแอปของคุณ คุณดูค่านี้ได้ในศูนย์พาร์ทเนอร์ของ Microsoft ในหน้าข้อมูลประจำตัวของแอป ในส่วนการจัดการแอป
- คลิกสร้าง
สำหรับแอป UWP นั้น URI สำหรับการเปลี่ยนเส้นทางจะถูกสร้างขึ้นโดยใช้ Package Security Identifier (SID) ที่ไม่ซ้ำกันของแอปพลิเคชันของคุณ คุณสามารถค้นหา Package SID ของแอปของคุณได้ในไฟล์ Package.appxmanifest ภายในโปรเจ็กต์ Visual Studio ของคุณ
เมื่อคุณสร้าง Client ID ใน Google Cloud Console คุณต้องระบุ Redirect URI ในรูปแบบต่อไปนี้ โดยใช้ค่าตัวพิมพ์เล็กของ Package SID ของคุณ:
ms-app://YOUR_APP_PACKAGE_SID
สำหรับแอป UWP รูปแบบ URI แบบกำหนดเองต้องมีความยาวไม่เกิน 39 ตัวอักษร ตามที่ระบุไว้ในเอกสารของ Microsoft
ระบุขอบเขตการเข้าถึง
ขอบเขต (Scopes) ช่วยให้แอปพลิเคชันของคุณขอสิทธิ์การเข้าถึงเฉพาะทรัพยากรที่จำเป็นเท่านั้น ในขณะเดียวกันก็ช่วยให้ผู้ใช้สามารถควบคุมปริมาณการเข้าถึงที่พวกเขามอบให้กับแอปพลิเคชันของคุณได้ ดังนั้น อาจมีความสัมพันธ์แบบผกผันระหว่างจำนวนขอบเขตที่ร้องขอและความน่าจะเป็นที่จะได้รับความยินยอมจากผู้ใช้
ก่อนที่คุณจะเริ่มใช้งานการอนุญาต OAuth 2.0 เราขอแนะนำให้คุณระบุขอบเขตที่แอปของคุณจำเป็นต้องได้รับอนุญาตให้เข้าถึงก่อน
API ของ YouTube Analytics ใช้ขอบเขตต่อไปนี้:
| ขอบเขต | คำอธิบาย |
|---|---|
https://www. |
จัดการบัญชี YouTube ของคุณ |
https://www. |
ดูบัญชี YouTube ของคุณ |
https://www. |
ดูและจัดการพื้นที่ของคุณและเนื้อหาที่เกี่ยวข้องใน YouTube |
https://www. |
ดูรายงาน YouTube Analytics ด้านการเงินและไม่ใช่ด้านการเงินสำหรับเนื้อหา YouTube ของคุณ |
https://www. |
ดูรายงาน YouTube Analytics สำหรับเนื้อหา YouTube ของคุณ |
API การรายงานของ YouTube ใช้ขอบเขตต่อไปนี้:
| ขอบเขต | คำอธิบาย |
|---|---|
https://www. |
ดูรายงาน YouTube Analytics ด้านการเงินและไม่ใช่ด้านการเงินสำหรับเนื้อหา YouTube ของคุณ |
https://www. |
ดูรายงาน YouTube Analytics สำหรับเนื้อหา YouTube ของคุณ |
เอกสาร OAuth 2.0 API Scopes มีรายการขอบเขตทั้งหมดที่คุณอาจใช้เพื่อเข้าถึง Google API
การขอรับโทเค็นการเข้าถึง OAuth 2.0
ขั้นตอนต่อไปนี้แสดงให้เห็นว่าแอปพลิเคชันของคุณโต้ตอบกับเซิร์ฟเวอร์ OAuth 2.0 ของ Google อย่างไร เพื่อขอความยินยอมจากผู้ใช้ในการดำเนินการร้องขอ API ในนามของผู้ใช้ แอปพลิเคชันของคุณต้องได้รับความยินยอมนั้นก่อน จึงจะสามารถดำเนินการร้องขอ Google API ที่ต้องมีการอนุญาตจากผู้ใช้ได้
ขั้นตอนที่ 1: สร้างตัวตรวจสอบรหัสและคำท้า
Google รองรับโปรโตคอล Proof Key for Code Exchange (PKCE) เพื่อเพิ่มความปลอดภัยในการติดตั้งแอป สำหรับคำขออนุญาตแต่ละครั้ง จะมีการสร้างตัวตรวจสอบรหัสที่ไม่ซ้ำกัน และค่าที่แปลงแล้วของตัวตรวจสอบรหัสนี้ ซึ่งเรียกว่า "code_challenge" จะถูกส่งไปยังเซิร์ฟเวอร์อนุญาตเพื่อรับรหัสอนุญาต
สร้างตัวตรวจสอบรหัส
code_verifier คือสตริงสุ่มเข้ารหัสที่มีเอนโทรปีสูง โดยใช้ตัวอักขระที่ไม่ได้สงวนไว้ [AZ] / [az] / [0-9] / "-" / "." / "_" / "~" โดยมีความยาวขั้นต่ำ 43 ตัวอักขระ และความยาวสูงสุด 128 ตัวอักขระ
ตัวตรวจสอบรหัสควรมีเอนโทรปีมากพอที่จะทำให้การเดาค่าเป็นไปไม่ได้ในทางปฏิบัติ
สร้างความท้าทายด้านการเขียนโค้ด
รองรับวิธีการสร้างโจทย์ท้าทายการเขียนโค้ดสองวิธี
| วิธีการสร้างโจทย์ท้าทายการเขียนโค้ด | |
|---|---|
| S256 (แนะนำ) | โค้ดที่ใช้ในการตรวจสอบคือค่าแฮช SHA256 ของตัวตรวจสอบโค้ดที่เข้ารหัสด้วย Base64URL (โดยไม่มีการเติมช่องว่าง)
|
| ธรรมดา | Code Challenge มีค่าเดียวกันกับ Code Verifier ที่สร้างขึ้นข้างต้น
|
ขั้นตอนที่ 2: ส่งคำขอไปยังเซิร์ฟเวอร์ OAuth 2.0 ของ Google
หากต้องการขอการให้สิทธิ์จากผู้ใช้ ให้ส่งคำขอไปยังเซิร์ฟเวอร์การให้สิทธิ์ของ Google ที่
https://accounts.google.com/o/oauth2/v2/auth ปลายทางนี้จะจัดการการค้นหาเซสชันที่ใช้งานอยู่
ตรวจสอบสิทธิ์ผู้ใช้ และขอรับความยินยอมจากผู้ใช้ ปลายทางจะเข้าถึงได้ผ่าน SSL เท่านั้น และจะปฏิเสธการเชื่อมต่อ HTTP (ที่ไม่ใช่ SSL)
เซิร์ฟเวอร์การให้สิทธิ์รองรับพารามิเตอร์สตริงคำค้นหาต่อไปนี้สำหรับแอปพลิเคชันที่ติดตั้ง
| พารามิเตอร์ | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
client_id |
จำเป็น
รหัสไคลเอ็นต์สำหรับแอปพลิเคชัน คุณดูค่านี้ได้ใน Cloud Console Clients page |
||||||||||||||||||
redirect_uri |
จำเป็น
กำหนดวิธีที่เซิร์ฟเวอร์การให้สิทธิ์ของ Google ส่งการตอบกลับไปยังแอปของคุณ มีตัวเลือกการเปลี่ยนเส้นทางหลายตัวเลือกสำหรับแอปที่ติดตั้งไว้ และคุณจะต้องตั้งค่าข้อมูลเข้าสู่ระบบการให้สิทธิ์โดยคำนึงถึงวิธีการเปลี่ยนเส้นทางที่เฉพาะเจาะจง ค่าต้องตรงกับ URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตสำหรับไคลเอ็นต์ OAuth 2.0
ซึ่งคุณกำหนดค่าไว้ใน
Cloud Console
Clients pageของไคลเอ็นต์ หากค่านี้ไม่ตรงกับ URI ที่ได้รับอนุญาต คุณจะได้รับ ตารางแสดงค่าพารามิเตอร์
|
||||||||||||||||||
response_type |
จำเป็น
ตรวจสอบว่าปลายทาง Google OAuth 2.0 ส่งคืนรหัสการอนุญาตหรือไม่ ตั้งค่าพารามิเตอร์เป็น |
||||||||||||||||||
scope |
จำเป็น
รายการขอบเขตที่คั่นด้วยช่องว่างซึ่งระบุทรัพยากรที่แอปพลิเคชันของคุณเข้าถึงได้ในนามของผู้ใช้ ค่าเหล่านี้จะแจ้งให้หน้าจอคำยินยอมที่ Google แสดงต่อผู้ใช้ทราบ ขอบเขตช่วยให้แอปพลิเคชันขอสิทธิ์เข้าถึงเฉพาะทรัพยากรที่จำเป็น ในขณะเดียวกันก็ช่วยให้ผู้ใช้ควบคุมระดับการเข้าถึงที่อนุญาตให้แอปพลิเคชันของคุณได้ด้วย ดังนั้น จำนวนขอบเขตที่ร้องขอและโอกาสที่จะได้รับความยินยอมจากผู้ใช้จึงมีความสัมพันธ์แบบผกผันกัน API ของ YouTube Analytics ใช้ขอบเขตต่อไปนี้:
API การรายงานของ YouTube ใช้ขอบเขตต่อไปนี้:
เอกสาร OAuth 2.0 API Scopes แสดงรายการขอบเขตทั้งหมดที่คุณอาจใช้เพื่อเข้าถึง Google API |
||||||||||||||||||
code_challenge |
แนะนำ
ระบุค่า |
||||||||||||||||||
code_challenge_method |
แนะนำ
ระบุวิธีการเข้ารหัส |
||||||||||||||||||
state |
แนะนำ
ระบุค่าสตริงที่แอปพลิเคชันใช้เพื่อรักษาสถานะระหว่างคำขอการให้สิทธิ์กับคำตอบของเซิร์ฟเวอร์การให้สิทธิ์
เซิร์ฟเวอร์จะส่งค่าที่แน่นอนที่คุณส่งมาเป็นคู่ คุณสามารถใช้พารามิเตอร์นี้เพื่อวัตถุประสงค์หลายประการ เช่น การนำผู้ใช้ไปยังทรัพยากรที่ถูกต้องในแอปพลิเคชันของคุณ การส่งค่า nonce และการลดความเสี่ยงจากการโจรกรรมข้อมูลข้ามเว็บไซต์ (Cross-Site Request Forgery) เนื่องจากสามารถเดาค่า |
||||||||||||||||||
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%2Fyt-analytics.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%2Fyt-analytics.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 ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ผู้ดูแลระบบอาจจำกัดการเข้าถึงขอบเขตทั้งหมดหรือขอบเขตที่มีความละเอียดอ่อนและ จำกัดจนกว่าจะมีการให้สิทธิ์เข้าถึงรหัสไคลเอ็นต์ OAuth อย่างชัดแจ้งได้ที่บทความช่วยเหลือสำหรับผู้ดูแลระบบ Google Workspace ควบคุมว่าจะให้แอปของบุคคลที่สามและแอปภายในรายการใดเข้าถึงข้อมูล Google Workspace ได้บ้าง
disallowed_useragent
ปลายทางการให้สิทธิ์จะแสดงภายใน User-Agent แบบฝังที่นโยบาย OAuth 2.0 ของ Google ไม่อนุญาต
นักพัฒนาแอป iOS และ macOS อาจพบข้อผิดพลาดนี้เมื่อเปิดคำขอการให้สิทธิ์ใน
WKWebView
นักพัฒนาแอปควรใช้ไลบรารี iOS เช่น
Google Sign-In สำหรับ iOS หรือ
AppAuth สำหรับ iOS ของ OpenID Foundation แทน
นักพัฒนาเว็บอาจพบข้อผิดพลาดนี้เมื่อแอป iOS หรือ macOS เปิดลิงก์เว็บทั่วไปใน
User-Agent ที่ฝังอยู่ และผู้ใช้ไปยังปลายทางการให้สิทธิ์ OAuth 2.0 ของ Google จาก
เว็บไซต์ของคุณ นักพัฒนาแอปควรอำนวยความสะดวกให้ลิงก์ทั่วไปเปิดในตัวแฮนเดิลลิงก์เริ่มต้นของ
ระบบปฏิบัติการ ซึ่งรวมถึงทั้งตัวแฮนเดิล
Universal Link
หรือแอปเบราว์เซอร์เริ่มต้น นอกจากนี้ ไลบรารี SFSafariViewController
ยังเป็นตัวเลือกที่รองรับด้วย
org_internal
รหัสไคลเอ็นต์ OAuth ในคำขอเป็นส่วนหนึ่งของโปรเจ็กต์ที่จำกัดการเข้าถึงบัญชี Google ใน องค์กร Google Cloud ที่เฉพาะเจาะจง ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการกำหนดค่านี้ได้ที่ส่วนประเภทผู้ใช้ ในบทความช่วยเหลือเกี่ยวกับการตั้งค่าหน้าจอขอความยินยอม OAuth
deleted_client
ไคลเอ็นต์ OAuth ที่ใช้สร้างคำขอถูกลบไปแล้ว การลบอาจเกิดขึ้นด้วยตนเอง หรือโดยอัตโนมัติในกรณีของ ไคลเอ็นต์ที่ไม่ได้ใช้ คุณกู้คืนลูกค้าที่ถูกลบได้ภายใน 30 วันนับจากวันที่ลบ ดูข้อมูลเพิ่มเติม
invalid_grant
หากคุณใช้
เครื่องมือตรวจสอบโค้ดและ
ชาเลนจ์ พารามิเตอร์ code_callenge จะไม่ถูกต้องหรือไม่พบ ตรวจสอบว่าได้ตั้งค่าพารามิเตอร์
code_challenge อย่างถูกต้อง
เมื่อรีเฟรชโทเค็นเพื่อการเข้าถึง โทเค็นอาจหมดอายุหรือถูกทำให้ไม่ถูกต้อง แล้ว ตรวจสอบสิทธิ์ผู้ใช้อีกครั้งและขอความยินยอมจากผู้ใช้เพื่อรับโทเค็นใหม่ หากยังเห็นข้อผิดพลาดนี้อยู่ โปรดตรวจสอบว่าได้กำหนดค่าแอปพลิเคชันอย่างถูกต้อง และคุณใช้โทเค็นและพารามิเตอร์ที่ถูกต้องในคำขอ มิฉะนั้นบัญชีผู้ใช้อาจถูกลบหรือปิดใช้
redirect_uri_mismatch
redirect_uri ที่ส่งในคำขอการให้สิทธิ์ไม่ตรงกับ URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต
สำหรับรหัสไคลเอ็นต์ OAuth ตรวจสอบ URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตใน
Google Cloud Console
Clients page
redirect_uri ที่ส่งมาอาจไม่ถูกต้องสำหรับประเภทไคลเอ็นต์
พารามิเตอร์ redirect_uri อาจอ้างอิงถึงโฟลว์ OAuth นอกแบนด์ (OOB) ที่
เลิกใช้งานแล้วและไม่รองรับอีกต่อไป โปรดดูคำแนะนำในการย้ายข้อมูลเพื่ออัปเดตการผสานรวม
invalid_request
คำขอที่คุณส่งมามีข้อผิดพลาด ซึ่งอาจเกิดจากสาเหตุหลายประการ ดังนี้
- คำขอมีรูปแบบไม่ถูกต้อง
- คำขอไม่มีพารามิเตอร์ที่จำเป็น
- คำขอใช้วิธีการให้สิทธิ์ที่ Google ไม่รองรับ ตรวจสอบว่าการผสานรวม OAuth ใช้วิธีการผสานรวมที่แนะนํา
- มีการใช้สคีมที่กำหนดเองที่ไม่รองรับสำหรับ URI การเปลี่ยนเส้นทาง หากเห็นข้อความแสดงข้อผิดพลาด แอป Android หรือ Chrome ไม่รองรับ URI Scheme ที่กำหนดเอง ดูข้อมูลเพิ่มเติมเกี่ยวกับทางเลือกอื่นของ URI Scheme ที่กำหนดเอง
ขั้นตอนที่ 4: จัดการการตอบกลับของเซิร์ฟเวอร์ OAuth 2.0
ลักษณะที่แอปพลิเคชันของคุณได้รับการตอบกลับการให้สิทธิ์จะขึ้นอยู่กับรูปแบบ URI การเปลี่ยนเส้นทางที่ใช้ ไม่ว่าจะเป็นรูปแบบใด การตอบกลับ
จะมีรหัสการให้สิทธิ์ (code) หรือข้อผิดพลาด
(error) เช่น error=access_denied แสดงว่าผู้ใช้
ปฏิเสธคำขอ
หากผู้ใช้ให้สิทธิ์เข้าถึงแอปพลิเคชันของคุณ คุณสามารถแลกรหัสการให้สิทธิ์เป็น โทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรชตามที่อธิบายไว้ในขั้นตอนถัดไป
ขั้นตอนที่ 5: แลกเปลี่ยนรหัสการให้สิทธิ์สำหรับโทเค็นการรีเฟรชและการเข้าถึง
หากต้องการแลกรหัสการให้สิทธิ์เป็นโทเค็นเพื่อการเข้าถึง ให้เรียกใช้
https://oauth2.googleapis.com/token ปลายทางและตั้งค่าพารามิเตอร์ต่อไปนี้
| ช่อง | |
|---|---|
client_id |
รหัสไคลเอ็นต์ที่ได้รับจาก Cloud Console Clients page |
client_secret |
ไม่บังคับ
รหัสลับของลูกค้าที่ได้รับจาก Cloud Console Clients page |
code |
รหัสการอนุญาตที่ได้รับจากการร้องขอครั้งแรก |
code_verifier |
ตัวตรวจสอบรหัสที่คุณสร้างใน ขั้นตอนที่ 1 |
grant_type |
ตามที่กำหนดไว้ในข้อกำหนด OAuth 2.0 ค่าของฟิลด์นี้ต้องตั้งค่าเป็น authorization_code |
redirect_uri |
หนึ่งใน URI การเปลี่ยนเส้นทางที่ระบุไว้สำหรับโครงการของคุณใน Cloud Console
Clients 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& redirect_uri=http://127.0.0.1:9004& grant_type=authorization_code
Google ตอบสนองต่อคำขอนี้โดยส่งคืนอ็อบเจ็กต์ JSON ที่ประกอบด้วยโทเค็นการเข้าถึงที่มีอายุสั้นและโทเค็นรีเฟรช
คำตอบประกอบด้วยฟิลด์ต่อไปนี้:
ตัวอย่างข้อความต่อไปนี้แสดงตัวอย่างการตอบกลับ:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "token_type": "Bearer", "scope": "https://www.googleapis.com/auth/yt-analytics.readonly https://www.googleapis.com/auth/calendar.readonly", "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }
ขั้นตอนที่ 6: ตรวจสอบว่าผู้ใช้ได้รับสิทธิ์การเข้าถึงขอบเขตใดบ้าง
เมื่อร้องขอสิทธิ์ (ขอบเขต) หลายรายการ รายการ ผู้ใช้อาจไม่อนุญาตให้แอปของคุณเข้าถึงสิทธิ์ทั้งหมดเหล่านั้น แอปของคุณต้องตรวจสอบว่าได้รับอนุญาตให้เข้าถึงขอบเขตใดบ้าง และจัดการกับสถานการณ์ที่การอนุญาตบางอย่างถูกปฏิเสธอย่างเหมาะสม โดยทั่วไปแล้วจะทำได้โดยการปิดใช้งานฟีเจอร์ที่ต้องอาศัยขอบเขตที่ถูกปฏิเสธเหล่านั้น
อย่างไรก็ตาม มีข้อยกเว้นอยู่บ้าง แอป Google Workspace Enterprise พร้อมด้วยการมอบอำนาจทั่วทั้งโดเมน หรือแอปที่ถูกทำเครื่องหมายไว้น่าเชื่อถือ ข้ามหน้าจอขอความยินยอมแบบละเอียดไปได้เลย สำหรับแอปพลิเคชันเหล่านี้ ผู้ใช้จะไม่เห็นหน้าจอขอความยินยอมแบบละเอียด แต่แอปของคุณจะได้รับขอบเขตที่ร้องขอทั้งหมดหรือจะไม่ได้รับเลย
สำหรับข้อมูลรายละเอียดเพิ่มเติม โปรดดูที่ วิธีจัดการสิทธิ์แบบละเอียด
เพื่อตรวจสอบว่าผู้ใช้ได้อนุญาตให้แอปพลิเคชันของคุณเข้าถึงขอบเขตใดขอบเขตหนึ่งหรือไม่ ให้ตรวจสอบฟิลด์ scope ในการตอบสนองโทเค็นการเข้าถึง ขอบเขตการเข้าถึงที่ได้รับอนุญาตจาก access_token จะแสดงในรูปแบบรายการสตริงที่คั่นด้วยช่องว่างและคำนึงถึงตัวพิมพ์ใหญ่เล็ก
ตัวอย่างเช่น ข้อความตอบกลับโทเค็นการเข้าถึงตัวอย่างต่อไปนี้แสดงให้เห็นว่าผู้ใช้ได้อนุญาตให้แอปพลิเคชันของคุณเข้าถึงสิทธิ์การอ่านอย่างเดียวสำหรับกิจกรรม Drive และกิจกรรมในปฏิทินแล้ว:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "token_type": "Bearer", "scope": "https://www.googleapis.com/auth/yt-analytics.readonly https://www.googleapis.com/auth/calendar.readonly", "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }
เรียกใช้ API ของ Google
หลังจากแอปพลิเคชันของคุณได้รับโทเค็นการเข้าถึงแล้ว คุณสามารถใช้โทเค็นนั้นเพื่อเรียกใช้ Google API ในนามของบัญชีผู้ใช้ที่กำหนดได้ หากคุณได้รับอนุญาตสิทธิ์การเข้าถึงที่ API นั้นต้องการแล้ว ในการทำเช่นนี้ ให้รวมโทเค็นการเข้าถึงไว้ในคำขอไปยัง API โดยการรวมพารามิเตอร์การค้นหา access_token หรือค่าส่วนหัว HTTP Authorization Bearer ไว้ด้วย หากเป็นไปได้ ควรใช้ส่วนหัว HTTP เนื่องจากสตริงคำค้นหามักจะปรากฏในบันทึกของเซิร์ฟเวอร์ ในกรณีส่วนใหญ่ คุณสามารถใช้ไลบรารีไคลเอ็นต์เพื่อตั้งค่าการเรียกใช้ API ของ Google ได้ (ตัวอย่างเช่น เมื่อ...)เรียกใช้ API ของ YouTube Analytics )
โปรดทราบว่า YouTube Analytics API ไม่รองรับขั้นตอนการใช้งานบัญชีบริการ API การรายงานของ YouTube รองรับบัญชีบริการเฉพาะสำหรับเจ้าของเนื้อหา YouTube ที่เป็นเจ้าของและจัดการช่อง YouTube หลายช่อง เช่น ค่ายเพลงและสตูดิโอภาพยนตร์
คุณสามารถทดลองใช้ Google API ทั้งหมดและดูขอบเขตการใช้งานได้ที่ OAuth 2.0 Playground
ตัวอย่าง HTTP GET
การเรียกร้องไปยัง
reports.query ปลายทาง (YouTube Analytics API) โดยใช้Authorization: Bearer ส่วนหัวของ HTTP อาจมีลักษณะดังต่อไปนี้ โปรดทราบว่าคุณต้องระบุโทเค็นการเข้าถึงของคุณเอง:
GET /youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views HTTP/1.1 Host: www.googleapis.com Authorization: Bearer access_token
ต่อไปนี้คือการเรียกใช้ API เดียวกันสำหรับผู้ใช้ที่เข้าสู่ระบบแล้ว โดยใช้พารามิเตอร์สตริงคำค้นหา access_token:
GET https://www.googleapis.com/youtube/analytics/v1/reports?access_token=access_token&ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views
ตัวอย่างของ curl
คุณสามารถทดสอบคำสั่งเหล่านี้ได้ด้วยแอปพลิเคชันบรรทัดคำสั่ง curl ต่อไปนี้เป็นตัวอย่างที่ใช้ตัวเลือกส่วนหัว HTTP (ซึ่งเป็นวิธีที่แนะนำ):
curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views
หรืออีกทางเลือกหนึ่งคือ ตัวเลือกพารามิเตอร์สตริงคำค้นหา:
curl https://www.googleapis.com/youtube/analytics/v1/reports?access_token=access_token&ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-06-30&metrics=views
รีเฟรชโทเค็นการเข้าถึง
โทเค็นการเข้าถึงจะหมดอายุเป็นระยะ และจะกลายเป็นข้อมูลประจำตัวที่ไม่ถูกต้องสำหรับการร้องขอ API ที่เกี่ยวข้อง คุณสามารถรีเฟรชโทเค็นการเข้าถึงได้โดยไม่ต้องขออนุญาตจากผู้ใช้ (รวมถึงกรณีที่ผู้ใช้ไม่อยู่) หากคุณได้ขอสิทธิ์การเข้าถึงแบบออฟไลน์สำหรับขอบเขตที่เกี่ยวข้องกับโทเค็นนั้น
ในการรีเฟรชโทเค็นการเข้าถึง แอปพลิเคชันของคุณจะส่งคำขอ HTTPS POST ไปยังเซิร์ฟเวอร์การอนุญาตของ Google (https://oauth2.googleapis.com/token) ซึ่งมีพารามิเตอร์ต่อไปนี้:
| ช่อง | |
|---|---|
client_id |
รหัสลูกค้าที่ได้รับจาก API Console |
client_secret |
ไม่บังคับ
รหัสลับของลูกค้าที่ได้รับจาก API Console
(เครื่องหมาย |
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& 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 https://www.googleapis.com/auth/calendar.readonly", "token_type": "Bearer" }
โปรดทราบว่ามีการจำกัดจำนวนโทเค็นการรีเฟรชที่จะออกให้ โดยมีการจำกัด 1 รายการต่อชุดค่าผสมไคลเอ็นต์/ผู้ใช้ และอีก 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 พร้อมกับรหัสข้อผิดพลาด
วิธีการเปลี่ยนเส้นทางแอป
รูปแบบ URI ที่กำหนดเอง
รูปแบบ URI ที่กำหนดเองเป็นรูปแบบของ Deep Link ที่ใช้รูปแบบที่กำหนดเองเพื่อเปิดแอป
ทางเลือกแทนการใช้ URI Scheme ที่กำหนดเองในแอป Chrome
ใช้ Chrome Identity API ซึ่งจะส่งการตอบกลับ OAuth 2.0 ไปยังแอปของคุณโดยตรง จึงไม่จำเป็นต้องใช้ URI การเปลี่ยนเส้นทาง
ที่อยู่ IP แบบ Loopback (macOS, Linux, เดสก์ท็อป Windows)
หากต้องการรับรหัสการให้สิทธิ์โดยใช้ URL นี้ แอปพลิเคชันของคุณต้องรับฟังใน เว็บเซิร์ฟเวอร์ในเครื่อง ซึ่งทำได้ในหลายแพลตฟอร์ม แต่ไม่ใช่ทุกแพลตฟอร์ม อย่างไรก็ตาม หากแพลตฟอร์ม รองรับ กลไกนี้เป็นกลไกที่แนะนำสำหรับการขอรับรหัสการให้สิทธิ์
เมื่อแอปของคุณได้รับข้อความตอบรับการอนุญาตแล้ว เพื่อการใช้งานที่ดีที่สุด แอปควรตอบกลับด้วยการแสดงหน้า HTML ที่แนะนำให้ผู้ใช้ปิดเบราว์เซอร์และกลับมาที่แอปของคุณ
| การใช้งานที่แนะนำ | แอปบนเดสก์ท็อป macOS, Linux และ Windows (แต่ไม่ใช่ Universal Windows Platform) |
| ค่าแบบฟอร์ม | ตั้งค่าประเภทแอปพลิเคชันเป็น แอปเดสก์ท็อป |
การคัดลอก/วางด้วยตนเอง (เลิกใช้งานแล้ว)
ปกป้องแอปของคุณ
ยืนยันการเป็นเจ้าของแอปสำหรับ Chrome
คุณยืนยันการเป็นเจ้าของแอปพลิเคชันเพื่อลดความเสี่ยงในการแอบอ้างเป็นแอปได้
หากต้องการดำเนินการยืนยันให้เสร็จสมบูรณ์ คุณจะต้องใช้บัญชีนักพัฒนาแอปของ Chrome เว็บสโตร์ คุณต้องมีคุณสมบัติตรงตามข้อกำหนดต่อไปนี้จึงจะยืนยันตัวตนได้สำเร็จ
- คุณต้องมีรายการที่ลงทะเบียนในแดชบอร์ดสำหรับนักพัฒนาซอฟต์แวร์ Chrome เว็บสโตร์ที่มีรหัสรายการเดียวกันกับไคลเอ็นต์ OAuth ของส่วนขยาย Chrome ที่คุณกำลังทำการยืนยัน
- คุณต้องเป็นผู้เผยแพร่รายการใน Chrome เว็บสโตร์ ดูข้อมูลเพิ่มเติม เกี่ยวกับการจัดการการเข้าถึงในแดชบอร์ดสำหรับนักพัฒนาแอป Chrome เว็บสโตร์
ในส่วนยืนยันการเป็นเจ้าของแอปของไคลเอ็นต์ส่วนขยาย Chrome ให้คลิกปุ่มยืนยันการเป็นเจ้าของเพื่อทําให้กระบวนการยืนยันเสร็จสมบูรณ์
หมายเหตุ: โปรดรอสักครู่ก่อนที่จะดำเนินการยืนยันให้เสร็จสมบูรณ์หลังจาก ให้สิทธิ์เข้าถึงบัญชี
หากการยืนยันสำเร็จ ระบบจะแสดงการแจ้งเตือนเพื่อยืนยันว่ากระบวนการยืนยัน สำเร็จ ไม่เช่นนั้นระบบจะแสดงข้อความแจ้งข้อผิดพลาด
หากต้องการแก้ไขการยืนยันที่ไม่สำเร็จ ให้ลองทำดังนี้
- ตรวจสอบว่ามีรายการที่ลงทะเบียนในแดชบอร์ดสำหรับนักพัฒนาซอฟต์แวร์ Chrome เว็บสโตร์ที่มี รหัสรายการเดียวกันกับไคลเอ็นต์ OAuth ของส่วนขยาย Chrome ที่คุณกำลังยืนยัน
- ตรวจสอบว่าคุณเป็นผู้เผยแพร่แอป นั่นคือคุณต้องเป็นผู้เผยแพร่แอปรายบุคคลหรือเป็นสมาชิกของผู้เผยแพร่แอปแบบกลุ่ม ดูข้อมูลเพิ่มเติม เกี่ยวกับการจัดการการเข้าถึงในแดชบอร์ดสำหรับนักพัฒนาแอปของ Chrome เว็บสโตร์
- หากคุณเพิ่งอัปเดตรายชื่อผู้เผยแพร่กลุ่ม โปรดตรวจสอบว่ารายชื่อสมาชิกผู้เผยแพร่กลุ่มได้รับการซิงค์ในแดชบอร์ดสำหรับนักพัฒนาของ Chrome Web Store แล้ว เรียนรู้เพิ่มเติม เกี่ยวกับการซิงค์รายชื่อสมาชิกสำนักพิมพ์ของคุณ
การตรวจสอบแอป (เฉพาะ iOS)
คุณสมบัติ App Check ช่วยปกป้องแอปพลิเคชัน iOS ของคุณจากการใช้งานที่ไม่ได้รับอนุญาต โดยใช้บริการ App Attest ของ Apple เพื่อตรวจสอบว่าคำขอที่ส่งไปยังปลายทาง Google OAuth 2.0 มาจากแอปพลิเคชันที่ถูกต้องของคุณ วิธีนี้ช่วยลดความเสี่ยงในการแอบอ้างเป็นผู้ใช้งานแอปพลิเคชัน
เปิดใช้งานการตรวจสอบแอปสำหรับไคลเอนต์ iOS ของคุณ
ต้องปฏิบัติตามข้อกำหนดต่อไปนี้เพื่อให้สามารถเปิดใช้งาน App Check สำหรับไคลเอ็นต์ iOS ของคุณได้สำเร็จ:- คุณต้องระบุรหัสทีมสำหรับไคลเอนต์ iOS ของคุณ
- คุณต้องไม่ใช้สัญลักษณ์ตัวแทน (wildcard) ในรหัสบันเดิล (bundle ID) เนื่องจากอาจชี้ไปยังแอปพลิเคชันได้มากกว่าหนึ่งแอป นั่นหมายความว่า รหัสบันเดิลต้องไม่มีสัญลักษณ์ดอกจัน (*)
หลังจากเปิดใช้งาน App Check แล้ว คุณจะเริ่มเห็นเมตริกที่เกี่ยวข้องกับคำขอ OAuth จากไคลเอ็นต์ของคุณในมุมมองแก้ไขของไคลเอ็นต์ OAuth คำขอจากแหล่งที่ไม่ได้รับการตรวจสอบจะไม่ถูกบล็อกจนกว่าคุณจะ บังคับใช้การตรวจสอบแอป ข้อมูลในหน้าตรวจสอบตัวชี้วัดจะช่วยให้คุณกำหนดได้ว่าควรเริ่มบังคับใช้กฎระเบียบเมื่อใด
คุณอาจพบข้อผิดพลาดที่เกี่ยวข้องกับฟีเจอร์ App Check เมื่อเปิดใช้งาน App Check สำหรับแอป iOS ของคุณ หากต้องการแก้ไขข้อผิดพลาดเหล่านี้ ให้ลองทำตามขั้นตอนต่อไปนี้:
- ตรวจสอบว่า Bundle ID และ Team ID ที่คุณระบุถูกต้องหรือไม่
- ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้สัญลักษณ์ตัวแทน (wildcard) สำหรับรหัสบันเดิล (bundle ID)
บังคับใช้การตรวจสอบแอปสำหรับไคลเอ็นต์ iOS ของคุณ
การเปิดใช้งานการตรวจสอบแอปสำหรับแอปของคุณไม่ได้หมายความว่าจะบล็อกคำขอที่ไม่รู้จักโดยอัตโนมัติ หากต้องการบังคับใช้การป้องกันนี้ ให้ไปที่มุมมองแก้ไขของแอปพลิเคชัน iOS ของคุณ ตรงนั้น คุณจะเห็นเมตริก App Check ทางด้านขวาของหน้า ภายใต้หัวข้อ Google Identity for iOS ตัวชี้วัดประกอบด้วยข้อมูลต่อไปนี้:- จำนวนคำขอที่ได้รับการยืนยัน - คำขอที่มีโทเค็น App Check ที่ถูกต้อง หลังจากเปิดใช้งานการบังคับใช้การตรวจสอบแอปแล้ว เฉพาะคำขอในหมวดหมู่นี้เท่านั้นที่จะสำเร็จ
- จำนวนคำขอที่ไม่ได้รับการตรวจสอบ: อาจเป็นคำขอจากไคลเอ็นต์ที่ล้าสมัย - คำขอที่ไม่มีโทเค็น App Check คำขอเหล่านี้อาจมาจากแอปเวอร์ชันเก่าของคุณที่ไม่มีการใช้งาน App Check
- จำนวนคำขอที่ไม่ได้รับการตรวจสอบ: คำขอจากแหล่งที่มาที่ไม่รู้จัก - คำขอที่ไม่มีโทเค็น App Check ซึ่งดูเหมือนว่าจะไม่ได้มาจากแอปของคุณ
- จำนวนคำขอที่ไม่ได้รับการตรวจสอบ: คำขอที่ไม่ถูกต้อง - คำขอที่มีโทเค็น App Check ไม่ถูกต้อง ซึ่งอาจมาจากไคลเอ็นต์ที่ไม่น่าเชื่อถือที่พยายามปลอมตัวเป็นแอปของคุณ หรือจากสภาพแวดล้อมจำลอง
หากต้องการบังคับใช้ App Check ให้คลิกปุ่มENFORCEและยืนยันตัวเลือก เมื่อการบังคับใช้ มีผลแล้ว ระบบจะปฏิเสธคำขอที่ยังไม่ยืนยันทั้งหมดจากไคลเอ็นต์ของคุณ
หมายเหตุ: หลังจากเปิดใช้การบังคับใช้แล้ว ระบบอาจใช้เวลาถึง 15 นาทีเพื่อให้การเปลี่ยนแปลงมีผล
ยกเลิกการบังคับใช้ App Check สำหรับไคลเอ็นต์ iOS
การยกเลิกการบังคับใช้ App Check สำหรับแอปจะหยุดการบังคับใช้และ จะอนุญาตคำขอทั้งหมดจากไคลเอ็นต์ไปยังปลายทาง OAuth 2.0 ของ Google รวมถึงคำขอที่ยังไม่ยืนยัน
หากต้องการยกเลิกการบังคับใช้ App Check สำหรับไคลเอ็นต์ iOS ให้ไปที่มุมมองแก้ไขของไคลเอ็นต์ iOS แล้ว คลิกปุ่มยกเลิกการบังคับใช้และยืนยันตัวเลือก
หมายเหตุ: หลังจากยกเลิกการบังคับใช้ App Check การเปลี่ยนแปลงอาจใช้เวลาถึง 15 นาทีจึงจะมีผล
ปิดใช้ App Check สำหรับไคลเอ็นต์ iOS
การปิดใช้ App Check สำหรับแอปจะหยุดการตรวจสอบ App Check ทั้งหมดและการบังคับใช้ ลองไม่บังคับใช้ App Check แทนเพื่อให้คุณตรวจสอบเมตริกสำหรับไคลเอ็นต์ต่อไปได้
หากต้องการปิดใช้ App Check สำหรับไคลเอ็นต์ iOS ให้ไปที่มุมมองแก้ไขของไคลเอ็นต์ iOS แล้วปิดปุ่มเปิด/ปิดปกป้องไคลเอ็นต์ OAuth จากการละเมิดด้วย Firebase App Check
หมายเหตุ: หลังจากปิดใช้ App Check การเปลี่ยนแปลงอาจใช้เวลาถึง 15 นาทีจึงจะมีผล
การเข้าถึงตามเวลา
สิทธิ์เข้าถึงตามเวลาช่วยให้ผู้ใช้สามารถให้สิทธิ์แอปของคุณเข้าถึงข้อมูลของตนเองในช่วงระยะเวลาจำกัด เพื่อดำเนินการให้เสร็จสมบูรณ์ สิทธิ์เข้าถึงตามเวลาจะพร้อมใช้งานในผลิตภัณฑ์บางอย่างของ Google ในระหว่างขั้นตอนความยินยอม เพื่อให้ผู้ใช้มีตัวเลือกในการให้สิทธิ์เข้าถึงในช่วงระยะเวลาที่จำกัด ตัวอย่างเช่น Data Portability API ซึ่งช่วยให้โอนข้อมูลได้แบบครั้งเดียว
เมื่อผู้ใช้ให้สิทธิ์เข้าถึงแอปพลิเคชันของคุณตามเวลา โทเค็นการรีเฟรชจะหมดอายุหลังจาก
ระยะเวลาที่ระบุ โปรดทราบว่าโทเค็นการรีเฟรชอาจถูกทำให้ใช้ไม่ได้ก่อนหน้านี้ในบางกรณี โปรดดูรายละเอียดในกรณีเหล่านี้ ฟิลด์ refresh_token_expires_in ที่แสดงในการตอบกลับรหัสการให้สิทธิ์
แลกเปลี่ยนจะแสดงเวลาที่เหลือจนกว่าโทเค็นการรีเฟรชจะหมดอายุในกรณีดังกล่าว
อ่านเพิ่มเติม
แนวทางปฏิบัติแนะนำปัจจุบันของ 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
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้การป้องกันแบบครอบคลุมหลายบริการและรายการเหตุการณ์ทั้งหมดที่พร้อมใช้งานได้ที่หน้า ปกป้องบัญชีผู้ใช้ด้วยการป้องกันแบบครอบคลุมหลายบริการ