OAuth 2.0 สำหรับแอปบนอุปกรณ์เคลื่อนที่และเดสก์ท็อป

เอกสารนี้อธิบายวิธีที่แอปพลิเคชันซึ่งติดตั้งในอุปกรณ์ต่างๆ เช่น โทรศัพท์ แท็บเล็ต และ คอมพิวเตอร์ ใช้ปลายทาง 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 สำหรับโปรเจ็กต์

  1. Open the API Library ใน Google API Console
  2. If prompted, select a project, or create a new one.
  3. ใช้หน้าคลังเพื่อค้นหาและเปิดใช้ API ของข้อมูลวิเคราะห์ YouTube และ Reporting API ของ YouTube แอปพลิเคชันจำนวนมากที่ดึงข้อมูลวิเคราะห์ YouTube ยังเชื่อมต่อกับ YouTube Data API ด้วย ค้นหา API อื่นๆ ที่แอปพลิเคชันของคุณจะใช้และเปิดใช้ API เหล่านั้นด้วย

สร้างข้อมูลเข้าสู่ระบบการให้สิทธิ์

แอปพลิเคชันที่ใช้ OAuth 2.0 เพื่อเข้าถึง Google APIs ต้องมีข้อมูลเข้าสู่ระบบการให้สิทธิ์ ที่ระบุแอปพลิเคชันไปยังเซิร์ฟเวอร์ OAuth 2.0 ของ Google ขั้นตอนต่อไปนี้จะอธิบายวิธี สร้างข้อมูลเข้าสู่ระบบสำหรับโปรเจ็กต์ จากนั้นแอปพลิเคชันจะใช้ข้อมูลเข้าสู่ระบบเพื่อเข้าถึง API ที่คุณเปิดใช้สำหรับโปรเจ็กต์นั้นได้

  1. Go to the Clients page.
  2. คลิกสร้างไคลเอ็นต์
  3. ส่วนต่อไปนี้จะอธิบายประเภทไคลเอ็นต์ที่เซิร์ฟเวอร์การให้สิทธิ์ของ Google รองรับ เลือกประเภทไคลเอ็นต์ที่แนะนําสําหรับ แอปพลิเคชัน ตั้งชื่อไคลเอ็นต์ OAuth และตั้งค่าช่องอื่นๆ ในแบบฟอร์มตาม ความเหมาะสม
iOS
  1. เลือกประเภทแอปพลิเคชัน iOS
  2. ป้อนชื่อสำหรับไคลเอ็นต์ OAuth ชื่อนี้จะแสดงใน Clients page ของโปรเจ็กต์เพื่อระบุไคลเอ็นต์
  3. ป้อนตัวระบุบันเดิลสำหรับแอปของคุณ รหัสบันเดิลคือค่าของคีย์ CFBundleIdentifier ในไฟล์ทรัพยากรรายการคุณสมบัติข้อมูลของแอปของคุณ (info.plist) โดยทั่วไปแล้ว ค่านี้จะแสดงอยู่ในส่วนทั่วไป (General pane) หรือส่วนการลงนามและคุณสมบัติ (Signing & Capabilities pane) ของโปรแกรมแก้ไขโปรเจ็กต์ Xcode นอกจากนี้ ระบบยังแสดงรหัส Bundle ในส่วนข้อมูลทั่วไปของ หน้าข้อมูลแอปสำหรับแอปใน เว็บไซต์ App Store Connect ของ Apple ด้วย

    ยืนยันว่าคุณใช้ Bundle ID ที่ถูกต้องสำหรับแอป เนื่องจากคุณจะเปลี่ยน Bundle ID ไม่ได้หากใช้ฟีเจอร์ App Check

  4. (ไม่บังคับ)

    ป้อนรหัส App Store ของแอป หากเผยแพร่แอปใน App Store ของ Apple รหัสร้านค้า คือสตริงตัวเลขที่รวมอยู่ใน URL ของ Apple App Store ทุกรายการ

    1. เปิด แอป Apple App Store ในอุปกรณ์ iOS หรือ iPadOS
    2. ค้นหาแอปของคุณ
    3. เลือกปุ่มแชร์ (สัญลักษณ์สี่เหลี่ยมและลูกศรชี้ขึ้น)
    4. เลือกคัดลอกลิงก์
    5. วางลิงก์ลงในเครื่องมือแก้ไขข้อความ รหัส App Store คือส่วนสุดท้ายของ URL

      ตัวอย่าง: https://apps.apple.com/app/google/id284815942

  5. (ไม่บังคับ)

    ป้อนรหัสทีม ดูข้อมูลเพิ่มเติมได้ที่ ค้นหา Team ID ในเอกสารประกอบของบัญชีนักพัฒนาแอป Apple

    หมายเหตุ: คุณต้องระบุฟิลด์รหัสทีมหากเปิดใช้ App Check สำหรับไคลเอ็นต์
  6. (ไม่บังคับ)

    เปิดใช้งาน App Check สำหรับแอป iOS ของคุณ เมื่อคุณเปิดใช้งาน App Check บริการ App Attest ของ Apple App Attest จะถูกใช้เพื่อตรวจสอบว่าคำขอ OAuth 2.0 ที่มาจากไคลเอ็นต์ OAuth ของคุณนั้นเป็นของแท้และมาจากแอปของคุณ ซึ่งจะช่วยลดความเสี่ยงในการปลอมแปลงแอป ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปิดใช้ App Check สำหรับแอป iOS

  7. คลิกสร้าง
UWP
  1. เลือกประเภทแอปพลิเคชัน Universal Windows Platform
  2. ป้อนชื่อสำหรับไคลเอ็นต์ OAuth ชื่อนี้จะแสดงบน Clients page ของโครงการของคุณเพื่อระบุลูกค้า
  3. ป้อนรหัส Microsoft Store ID 12 ตัวอักษรของแอปของคุณ คุณดูค่านี้ได้ในศูนย์พาร์ทเนอร์ของ Microsoft ในหน้าข้อมูลประจำตัวของแอป ในส่วนการจัดการแอป
  4. คลิกสร้าง

สำหรับแอป 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.googleapis.com/auth/youtube จัดการบัญชี YouTube ของคุณ
https://www.googleapis.com/auth/youtube.readonly ดูบัญชี YouTube ของคุณ
https://www.googleapis.com/auth/youtubepartner ดูและจัดการพื้นที่ของคุณและเนื้อหาที่เกี่ยวข้องใน YouTube
https://www.googleapis.com/auth/yt-analytics-monetary.readonly ดูรายงาน YouTube Analytics ด้านการเงินและไม่ใช่ด้านการเงินสำหรับเนื้อหา YouTube ของคุณ
https://www.googleapis.com/auth/yt-analytics.readonly ดูรายงาน YouTube Analytics สำหรับเนื้อหา YouTube ของคุณ

API การรายงานของ YouTube ใช้ขอบเขตต่อไปนี้:

ขอบเขต คำอธิบาย
https://www.googleapis.com/auth/yt-analytics-monetary.readonly ดูรายงาน YouTube Analytics ด้านการเงินและไม่ใช่ด้านการเงินสำหรับเนื้อหา YouTube ของคุณ
https://www.googleapis.com/auth/yt-analytics.readonly ดูรายงาน 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 = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))
ธรรมดา Code Challenge มีค่าเดียวกันกับ Code Verifier ที่สร้างขึ้นข้างต้น
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 ที่ได้รับอนุญาต คุณจะได้รับredirect_uri_mismatchข้อผิดพลาด

ตารางแสดงค่าพารามิเตอร์ redirect_uri ที่เหมาะสมสำหรับแต่ละวิธี ดังนี้

ค่า redirect_uri
รูปแบบ URI ที่กำหนดเอง com.example.app:redirect_uri_path

หรือ

com.googleusercontent.apps.123:redirect_uri_path
  • com.example.app คือสัญกรณ์ DNS แบบย้อนกลับของโดเมนภายใต้การควบคุมของคุณ รูปแบบที่กำหนดเองต้องมีจุดจึงจะใช้ได้
  • com.googleusercontent.apps.123 คือสัญกรณ์ DNS แบบย้อนกลับของ รหัสไคลเอ็นต์
  • redirect_uri_path เป็นคอมโพเนนต์เส้นทางที่ไม่บังคับ เช่น /oauth2redirect โปรดทราบว่าเส้นทางควรเริ่มต้นด้วยเครื่องหมายทับเดี่ยว ซึ่งแตกต่างจาก URL HTTP ปกติ
ที่อยู่ IP แบบวนกลับ http://127.0.0.1:port หรือ http://[::1]:port

ค้นหาที่อยู่ IP แบบวนรอบที่เกี่ยวข้องในแพลตฟอร์มของคุณ แล้วเริ่มตัวฟัง HTTP ในพอร์ตที่ว่างแบบสุ่ม แทนที่ port ด้วย หมายเลขพอร์ตจริงที่แอปของคุณรอรับฟัง

โปรดทราบว่าการรองรับตัวเลือกการเปลี่ยนเส้นทางที่อยู่ IP แบบวนรอบในแอปบนอุปกรณ์เคลื่อนที่ เลิกใช้งานแล้ว

response_type จำเป็น

ตรวจสอบว่าปลายทาง Google OAuth 2.0 ส่งคืนรหัสการอนุญาตหรือไม่

ตั้งค่าพารามิเตอร์เป็น code สำหรับแอปพลิเคชันที่ติดตั้งแล้ว

scope จำเป็น

รายการขอบเขตที่คั่นด้วยช่องว่างซึ่งระบุทรัพยากรที่แอปพลิเคชันของคุณเข้าถึงได้ในนามของผู้ใช้ ค่าเหล่านี้จะแจ้งให้หน้าจอคำยินยอมที่ Google แสดงต่อผู้ใช้ทราบ

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

API ของ YouTube Analytics ใช้ขอบเขตต่อไปนี้:

ขอบเขต คำอธิบาย
https://www.googleapis.com/auth/youtube จัดการบัญชี YouTube ของคุณ
https://www.googleapis.com/auth/youtube.readonly ดูบัญชี YouTube ของคุณ
https://www.googleapis.com/auth/youtubepartner ดูและจัดการพื้นที่ของคุณและเนื้อหาที่เกี่ยวข้องใน YouTube
https://www.googleapis.com/auth/yt-analytics-monetary.readonly ดูรายงาน YouTube Analytics ด้านการเงินและไม่ใช่ด้านการเงินสำหรับเนื้อหา YouTube ของคุณ
https://www.googleapis.com/auth/yt-analytics.readonly ดูรายงาน YouTube Analytics สำหรับเนื้อหา YouTube ของคุณ

API การรายงานของ YouTube ใช้ขอบเขตต่อไปนี้:

ขอบเขต คำอธิบาย
https://www.googleapis.com/auth/yt-analytics-monetary.readonly ดูรายงาน YouTube Analytics ด้านการเงินและไม่ใช่ด้านการเงินสำหรับเนื้อหา YouTube ของคุณ
https://www.googleapis.com/auth/yt-analytics.readonly ดูรายงาน YouTube Analytics สำหรับเนื้อหา YouTube ของคุณ

เอกสาร OAuth 2.0 API Scopes แสดงรายการขอบเขตทั้งหมดที่คุณอาจใช้เพื่อเข้าถึง Google API

code_challenge แนะนำ

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

code_challenge_method แนะนำ

ระบุวิธีการเข้ารหัส code_verifier ที่จะใช้ระหว่างการแลกเปลี่ยนรหัสการอนุญาต พารามิเตอร์นี้ต้องใช้ร่วมกับพารามิเตอร์ code_challenge ค่าของ code_challenge_method จะมีค่าเริ่มต้นเป็น plain หากไม่มีอยู่ในคำขอที่มี code_challenge ค่าที่รองรับสำหรับพารามิเตอร์นี้คือ S256 หรือ plain เท่านั้น

state แนะนำ

ระบุค่าสตริงที่แอปพลิเคชันใช้เพื่อรักษาสถานะระหว่างคำขอการให้สิทธิ์กับคำตอบของเซิร์ฟเวอร์การให้สิทธิ์ เซิร์ฟเวอร์จะส่งค่าที่แน่นอนที่คุณส่งมาเป็นคู่ name=value ในตัวระบุส่วนย่อยของ URL (#) ของ redirect_uri หลังจากที่ผู้ใช้ยินยอมหรือปฏิเสธคำขอการเข้าถึงแอปพลิเคชันของคุณ

คุณสามารถใช้พารามิเตอร์นี้เพื่อวัตถุประสงค์หลายประการ เช่น การนำผู้ใช้ไปยังทรัพยากรที่ถูกต้องในแอปพลิเคชันของคุณ การส่งค่า nonce และการลดความเสี่ยงจากการโจรกรรมข้อมูลข้ามเว็บไซต์ (Cross-Site Request Forgery) เนื่องจากสามารถเดาค่า redirect_uri ของคุณได้ การใช้ค่า state จะช่วยเพิ่มความมั่นใจว่าการเชื่อมต่อขาเข้าเป็นผลมาจากการร้องขอการตรวจสอบสิทธิ์ หากคุณสร้างสตริงแบบสุ่มหรือเข้ารหัสแฮชของคุกกี้หรือค่าอื่น ๆ ที่เก็บสถานะของไคลเอ็นต์ คุณสามารถตรวจสอบความถูกต้องของการตอบกลับเพื่อให้แน่ใจเพิ่มเติมว่าคำขอและการตอบกลับมาจากเบราว์เซอร์เดียวกัน ซึ่งจะช่วยป้องกันการโจมตีเช่น การปลอมแปลงคำขอข้ามไซต์ ดูเอกสาร OpenID Connect สำหรับตัวอย่างวิธีการสร้างและยืนยันโทเค็น state

login_hint ไม่บังคับ

หากแอปพลิเคชันทราบว่าผู้ใช้รายใดพยายามตรวจสอบสิทธิ์ แอปพลิเคชันจะใช้พารามิเตอร์นี้ เพื่อให้คำแนะนำแก่เซิร์ฟเวอร์การตรวจสอบสิทธิ์ของ Google ได้ เซิร์ฟเวอร์ใช้คำใบ้เพื่อ ลดความซับซ้อนของขั้นตอนการเข้าสู่ระบบโดยการป้อนข้อมูลในช่องอีเมลล่วงหน้าในแบบฟอร์มการลงชื่อเข้าใช้ หรือโดยการ เลือกเซสชันการเข้าสู่ระบบหลายรายการที่เหมาะสม

ตั้งค่าพารามิเตอร์เป็นอีเมลหรือตัวระบุ sub ซึ่งเทียบเท่ากับ รหัส 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 โทเค็นที่แอปพลิเคชันของคุณส่งเพื่ออนุญาตการร้องขอ Google API
expires_in ระยะเวลาที่เหลืออยู่ของโทเค็นการเข้าถึงในหน่วยวินาที
id_token หมายเหตุ: คุณสมบัตินี้จะถูกส่งคืนเฉพาะเมื่อคำขอของคุณมีขอบเขตข้อมูลประจำตัว เช่น openid, profile หรือ email ค่าดังกล่าวคือ JSON Web Token (JWT) ซึ่งประกอบด้วยข้อมูลระบุตัวตนของผู้ใช้ที่ลงนามด้วยระบบดิจิทัล
refresh_token โทเค็นที่คุณสามารถใช้เพื่อขอรับโทเค็นการเข้าถึงใหม่ได้ โทเค็นรีเฟรชจะใช้งานได้จนกว่าผู้ใช้จะยกเลิกการเข้าถึงหรือโทเค็นรีเฟรชหมดอายุ โปรดทราบว่าระบบจะส่งคืนโทเค็นรีเฟรชสำหรับแอปพลิเคชันที่ติดตั้งแล้วเสมอ
refresh_token_expires_in ระยะเวลาคงเหลือของรีเฟรชโทเค็น (หน่วยเป็นวินาที) ค่านี้จะถูกกำหนดก็ต่อเมื่อผู้ใช้ให้สิทธิ์การเข้าถึงตามเวลา เท่านั้น
scope ขอบเขตการเข้าถึงที่ได้รับอนุญาตจาก access_token แสดงเป็นรายการของสตริงที่คั่นด้วยช่องว่างและคำนึงถึงตัวพิมพ์ใหญ่-เล็ก
token_type ประเภทของโทเค็นที่ส่งคืน ในขณะนี้ ค่าของฟิลด์นี้จะถูกตั้งค่าเป็น Bearer เสมอ

ตัวอย่างข้อความต่อไปนี้แสดงตัวอย่างการตอบกลับ:

{
  "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 (เครื่องหมาย 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&
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 ให้คลิกปุ่มยืนยันการเป็นเจ้าของเพื่อทําให้กระบวนการยืนยันเสร็จสมบูรณ์

หมายเหตุ: โปรดรอสักครู่ก่อนที่จะดำเนินการยืนยันให้เสร็จสมบูรณ์หลังจาก ให้สิทธิ์เข้าถึงบัญชี

หากการยืนยันสำเร็จ ระบบจะแสดงการแจ้งเตือนเพื่อยืนยันว่ากระบวนการยืนยัน สำเร็จ ไม่เช่นนั้นระบบจะแสดงข้อความแจ้งข้อผิดพลาด

หากต้องการแก้ไขการยืนยันที่ไม่สำเร็จ ให้ลองทำดังนี้

  • ตรวจสอบว่ามีรายการที่ลงทะเบียนในแดชบอร์ดสำหรับนักพัฒนาซอฟต์แวร์ 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 ของคุณจากการถูกละเมิดด้วย Firebase App Check ในมุมมองการแก้ไขของไคลเอ็นต์ iOS ของคุณ

หลังจากเปิดใช้งาน 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 จะส่งผลต่อผู้ใช้อย่างไร

หากต้องการบังคับใช้ 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

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