```html
OAuth 2.0 Authorization Code Grant เป็นวิธีการตรวจสอบสิทธิ์ทั่วไปที่ใช้โดยบริการมากมาย รวมถึง GitHub เพื่อให้แอปพลิเคชันของบุคคลที่สามเข้าถึงข้อมูลผู้ใช้ได้โดยไม่ต้องแชร์รหัสผ่าน การนำไปใช้และการแก้ไขข้อบกพร่องใน Apidog อาจเป็นทักษะที่มีค่า
OAuth 2.0
OAuth 2.0 เป็นโปรโตคอลการให้สิทธิ์ที่ใช้กันอย่างแพร่หลาย ซึ่งช่วยให้บุคคลที่สามเข้าถึงทรัพยากรที่ได้รับการป้องกันได้โดยไม่ต้องใช้ข้อมูลประจำตัวของผู้ใช้ เกี่ยวข้องกับบทบาทหลักสี่ประการ ได้แก่ เจ้าของทรัพยากร ไคลเอนต์ เซิร์ฟเวอร์การให้สิทธิ์ และเซิร์ฟเวอร์ทรัพยากร

ขั้นตอนการให้สิทธิ์ทั่วไป
โปรโตคอล OAuth 2.0 ใช้การให้สิทธิ์ผ่านขั้นตอนการให้สิทธิ์ต่างๆ ขั้นตอนการให้สิทธิ์ทั่วไป ได้แก่:
- Authorization Code Grant: ไคลเอนต์เปลี่ยนเส้นทางผู้ใช้ไปยังเซิร์ฟเวอร์การให้สิทธิ์ หลังจากที่ผู้ใช้เข้าสู่ระบบและให้สิทธิ์ เซิร์ฟเวอร์การให้สิทธิ์จะส่งรหัสการให้สิทธิ์กลับไปยังไคลเอนต์ จากนั้นไคลเอนต์จะแลกเปลี่ยนรหัสการให้สิทธิ์พร้อมกับข้อมูลประจำตัวสำหรับโทเค็นการเข้าถึง
- Authorization Code Grant with PKCE (Proof Key for Code Exchange): คล้ายกับขั้นตอนการให้สิทธิ์รหัสมาตรฐาน แต่ไคลเอนต์จะเพิ่มความปลอดภัยโดยใช้ PKCE (Proof Key for Code Exchange)
- Resource Owner Password Credentials Grant: เจ้าของทรัพยากรให้ชื่อผู้ใช้และรหัสผ่านโดยตรงแก่ไคลเอนต์ จากนั้นไคลเอนต์จะใช้ข้อมูลประจำตัวเหล่านี้เพื่อขอโทเค็นการเข้าถึงจากเซิร์ฟเวอร์การให้สิทธิ์
- Client Credentials Grant: ไคลเอนต์ขอโทเค็นการเข้าถึงโดยตรงจากเซิร์ฟเวอร์การให้สิทธิ์โดยใช้ข้อมูลประจำตัวของตนเอง ขั้นตอนนี้เหมาะสำหรับกรณีที่ไคลเอนต์ต้องการเข้าถึงทรัพยากร
- Implicit Grant: ใช้เพื่อรับโทเค็นการเข้าถึงโดยตรงจากไคลเอนต์ในแอปพลิเคชันบนเบราว์เซอร์ ขั้นตอนนี้มักใช้สำหรับแอปพลิเคชันส่วนหน้าเว็บ
วิธีตั้งค่า Github OAuth 2.0 (Client ID และ Client Secret)
ขั้นตอนที่ 1: สร้างแอปและรับ Client ID และ Client Secret
ในการรับ Client ID และ Client Key เราต้องสร้างแอปพลิเคชันก่อน คลิกที่ลิงก์นี้เพื่อสร้างแอปพลิเคชันใน Github: https://github.com/settings/applications/new จากนั้นกรอก "Homepage URL" ของคุณที่นี่ ชื่อโดเมน หากเป็นการแก้ไขข้อบกพร่องในเครื่อง คุณสามารถกรอกบริการในเครื่องของคุณ เช่น http://127.0.0.1:8000
กรอกที่อยู่การเรียกกลับของคุณใน "Authorization callback URL" ซึ่งอาจเป็นชื่อโดเมนของคุณหรือที่อยู่การเรียกกลับในเครื่องของคุณ เช่น http://127.0.0.1:8000/callback
หลังจากกรอกการกำหนดค่าที่เกี่ยวข้องแล้ว ให้คลิก "Register application" เพื่อสร้าง

หลังจากสร้างแอปพลิเคชันแล้ว Client ID และ Client Secret จะถูกสร้างขึ้น Client Key จำเป็นต้องสร้างแยกต่างหาก คลิก "Generate a new client secret" เพื่อสร้าง Key

ขั้นตอนที่ 2: รับ access token
เมื่อขั้นตอนแรกข้างต้นพร้อมแล้ว เราสามารถขอ access token (Token) ได้ เราจะสาธิตขั้นตอนนี้ผ่าน Apidog Apidog เป็นเครื่องมือแก้ไขข้อบกพร่องและการจัดการ API ที่ยอดเยี่ยมมาก

คุณสามารถรับ access token ได้โดยตรงใน Apidog หากคุณยังไม่ได้ติดตั้ง Apidog ให้ไปดาวน์โหลดเลย!
- สร้างโปรเจกต์ HTTP ใหม่ใน Apidog และเปิด จากนั้นสร้างคำขอใหม่ในโปรเจกต์และเลือก [Modify Document -> Auth -> OAuth 2.0 -> option

2. กำหนดค่า Client ID, Client Key และที่อยู่เปลี่ยนเส้นทาง
โหมดการให้สิทธิ์เริ่มต้นที่เลือกในหน้า OAuth 2.0 ใน Apifdog คือ Authorization Code (โหมดรหัสการให้สิทธิ์)
เนื่องจาก Github OAuth 2.0 ยังใช้ Authorization Code (โหมดรหัสการให้สิทธิ์) คุณจึงไม่จำเป็นต้องสลับที่นี่

จากนั้นค้นหา Client ID, Client Secret และ Callback URL ที่ด้านล่างของหน้า Client ID (Client ID), Client Secret (Client Secret) และที่อยู่การเรียกกลับที่กำหนดค่าไว้ (Callback URL) จะได้รับจากบริการ OAuth 2.0 ของ Github
เพียงแค่กรอกลงไป พารามิเตอร์เฉพาะคือการกำหนดค่าใน "ขั้นตอนที่ 1" ด้านบน

3. กำหนดค่าที่อยู่คำขอของรหัสการให้สิทธิ์
ตามเอกสารอย่างเป็นทางการของ Github เมื่อทำการตรวจสอบสิทธิ์ OAuth 2.0 ที่อยู่คำขอ (Auth URL) ของรหัสการให้สิทธิ์คือ:
https://github.com/login/oauth/authorize
เพียงกรอกที่อยู่คำขอของรหัสการให้สิทธิ์นี้ลงใน Auth URL เราสามารถเข้าใจที่อยู่นี้ว่าเป็นหน้าการให้สิทธิ์การเข้าสู่ระบบ
หน้านี้จะเปิดขึ้นเมื่อสถานะการเข้าสู่ระบบได้รับการยืนยันเป็นครั้งแรก (เป็นหน้าต่างบนไคลเอนต์) จากนั้นคุณจะถูกขอให้กรอกชื่อผู้ใช้และรหัสผ่าน

โดยทั่วไป เมื่อสร้างหน้าการให้สิทธิ์การเข้าสู่ระบบด้วยตนเอง จำเป็นต้องมีพารามิเตอร์บางอย่างหลังจากที่อยู่การให้สิทธิ์
อย่างไรก็ตาม ใน Apidog พารามิเตอร์หลังจาก URL โดยทั่วไปไม่จำเป็นต้องมี เพียงแค่เส้นทางด้านหน้าเครื่องหมายคำถาม? ก็เพียงพอแล้ว เนื่องจากส่วนอื่นๆ จำเป็นต้องใช้ พารามิเตอร์ได้รับการกำหนดค่าแยกต่างหากในตัวเลือกอื่นๆ
แน่นอน หากคุณต้องการพกพารามิเตอร์ Query คุณสามารถเพิ่มได้เช่นกัน คลิกที่ไอคอนหลังช่องป้อนข้อมูลเพื่อเพิ่ม:

เรายังสามารถขยายตัวเลือก "เพิ่มเติม" และกรอกค่าพารามิเตอร์ที่จำเป็นต้องกรอกลงในตัวเลือกที่เกี่ยวข้อง ตัวอย่างเช่น ใน "Scope" คุณสามารถกรอกสิทธิ์ที่จำเป็น เช่น read:user, user:email เป็นต้น
คุณสามารถมีสิทธิ์เพิ่มเติมสำหรับอื่นๆ คุณสามารถเข้าชมโมดูลสิทธิ์ของเอกสารช่วยเหลือ Github เพื่อดูได้ กรอก state ในตัวเลือก "State" State คือการป้องกันการปลอมแปลงคำขอข้ามไซต์

4. กำหนดค่าที่อยู่คำขอของ access token
ตามเอกสารอย่างเป็นทางการของ Github ในการขอ access token URL ที่ร้องขอคือ:
https://github.com/login/oauth/access_token
เพียงกรอกที่อยู่ด้านบนลงในช่องป้อนข้อมูล Access Token URL ของหน้า OAuth 2.0 ของ Apidog

5. รับ access token สำหรับบริการ Github OAuth 2.0
หลังจากตั้งค่ารายการการกำหนดค่าข้างต้นแล้ว คุณสามารถคลิกปุ่ม "Get Token" เพื่อรับ access token
หลังจากคลิก หากนี่เป็นครั้งแรกที่คุณเข้าสู่ระบบ หน้าต่างจะปรากฏขึ้นเพื่อให้คุณให้สิทธิ์ เพียงกรอกชื่อผู้ใช้และรหัสผ่านของบัญชี Github ของคุณ

หลังจากกรอกชื่อผู้ใช้และรหัสผ่านแล้ว คุณจะถูกขอให้ยืนยันการให้สิทธิ์หรือทำการยืนยันสองขั้นตอน หลังจากยืนยันแล้ว ให้คลิกยืนยัน
หลังจากเสร็จสิ้นการให้สิทธิ์ access token จะถูกรับและแสดงบนหน้าโดยอัตโนมัติ ในเวลาเดียวกัน ข้อมูลอื่นๆ ที่ส่งคืนโดย Github จะถูกแยกวิเคราะห์ด้วย ดังแสดงในรูปด้านล่าง "หมดอายุ" จะแสดงที่นี่เนื่องจาก Github ไม่ได้ส่งคืนแอตทริบิวต์ expires_in ให้เรา ดังนั้นเราจึงไม่สามารถตัดสินได้ อย่างไรก็ตาม Token นี้ใช้งานได้ มาเริ่มคำขอด้านล่างกัน

ขั้นตอนที่ 3: เข้าถึงทรัพยากรแบบเปิดตาม Token
หลังจากที่คุณมี access token (Token) แล้ว คุณสามารถใช้ access token นี้เพื่อเรียกใช้ทรัพยากรแบบเปิดของ Github คุณสามารถดูทรัพยากรแบบเปิดเฉพาะใน Github API
ตัวอย่างเช่น API ต่อไปนี้จะได้รับข้อมูลผู้ใช้ หากอินเทอร์เฟซของคุณไม่ส่งคืน คุณต้องตรวจสอบว่าคุณมีสิทธิ์หรือไม่ ดังที่กล่าวไว้ในส่วนที่ 3 ของ "ขั้นตอนที่ 2" เพียงแค่กำหนดค่าใน Scope

เมื่อส่งคำขอ Apidog จะผนวก Token เข้ากับ Authorization ของส่วนหัวคำขอโดยอัตโนมัติ เพิ่มลงใน Bearer และส่งออกไป หากคุณต้องการพกพา Token ใน URL คุณยังสามารถแก้ไข "Add Location" ของ Token ในรายการการกำหนดค่าของหน้าและเลือก "Query Params"

สรุป
OAuth 2.0 เป็นกรอบการให้สิทธิ์ที่ช่วยให้แอปพลิเคชันของบุคคลที่สามได้รับ access token โดยไม่ต้องให้ผู้ใช้ระบุชื่อผู้ใช้และรหัสผ่าน กระบวนการให้สิทธิ์ที่ใช้โดย GitHub คือ "กระบวนการให้สิทธิ์รหัสการให้สิทธิ์" และกระบวนการให้สิทธิ์สามารถแก้ไขข้อบกพร่องและกำหนดค่าได้ใน Apidog
```