ข้อผิดพลาดอาจเกิดขึ้นในเลเยอร์ต่างๆ คุณอาจได้รับการแจ้งเตือนในรูปแบบต่างๆ ขึ้นอยู่กับว่าข้อผิดพลาดเกิดขึ้นที่ใด
พารามิเตอร์ OAuth ที่จำเป็น
หากลืมตั้งค่าพารามิเตอร์ OAuth ที่จำเป็น เช่น client_id หรือ scope คุณจะเห็นข้อความแสดงข้อผิดพลาดในคอนโซล JavaScript ของเบราว์เซอร์

แก้ไขข้อผิดพลาดในการกำหนดค่า OAuth
คุณอาจต้องทำการเปลี่ยนแปลงในคอนโซล Google APIs เพื่อแก้ไขข้อผิดพลาดบางอย่าง
- สร้างรหัสไคลเอ็นต์หากยังไม่มี
- สําหรับ UX ของป๊อปอัป ให้เพิ่มโดเมนทั้งหมดที่อาจทําให้เกิดโฟลว์ปัจจุบันไปยัง
Authorized JavaScript origins
- สำหรับ UX การเปลี่ยนเส้นทาง ให้เพิ่ม URL ทั้งหมดที่อาจได้รับการตอบกลับการให้สิทธิ์ไปยัง
Authorized redirect URIs
- กำหนดค่าหน้าจอขอความยินยอม OAuth อย่างถูกต้อง
- ส่งแอปเพื่อขอรับการยืนยันหากจำเป็น
- คุณอาจต้องทำตามขั้นตอนเพิ่มเติมเพื่อปฏิบัติตามนโยบาย OAuth 2.0 ของ Google
ค่าพารามิเตอร์ OAuth ไม่ถูกต้อง
หากตั้งค่าที่ไม่ถูกต้องให้กับพารามิเตอร์ OAuth เช่น รหัสไคลเอ็นต์ที่ไม่ถูกต้อง ตัวระบุขอบเขต หรือค่าประเภทการตอบกลับ คุณจะเห็นหน้าข้อผิดพลาดของ OAuth

การตอบกลับข้อผิดพลาดของ OAuth
OAuth อาจแสดงการตอบกลับข้อผิดพลาด ในกรณีนี้ ฟังก์ชัน callback
จะทริกเกอร์โดยมีการตอบกลับข้อผิดพลาดเป็นพารามิเตอร์ ตัวอย่างการตอบกลับข้อผิดพลาดของ OAuth มีดังนี้
{ "error":"access_denied" }
ตัวอย่างเช่น
- ผู้ใช้ปฏิเสธคำขอ OAuth
- สำหรับคำขอ OAuth ที่มีพารามิเตอร์
prompt=none
ผู้ใช้จะยังไม่ได้รับการตรวจสอบสิทธิ์และยังไม่ได้กำหนดค่าความยินยอมล่วงหน้าสำหรับขอบเขตที่ขอ
ตัวอย่างนี้แสดงวิธีจัดการการตอบกลับ OAuth ที่สำเร็จและข้อผิดพลาด
function myCallback(response) {
if (response.error) {
// Handle error response
... ...
} else if (response.code) {
// Handle success code response
... ...
}
}
ข้อผิดพลาดที่ไม่ใช่ OAuth
OAuth ไม่ได้กำหนดลักษณะการทำงานในกรณีต่อไปนี้
- เปิดหน้าต่างป๊อปอัปไม่สำเร็จ
- หน้าต่างป๊อปอัปปิดก่อนที่จะมีการส่งคืนการตอบกลับ OAuth
ไลบรารีนี้จะบันทึกข้อผิดพลาดเหล่านี้ และทริกเกอร์ error_callback
หากมีการตั้งค่า
ไว้ อย่าลืมตรวจสอบประเภทข้อผิดพลาด ไม่เช่นนั้น ตรรกะของโค้ดอาจ
ได้รับผลกระทบเมื่อไลบรารีนี้รองรับข้อผิดพลาดประเภทใหม่ในภายหลัง
function myErrorCallback(err) {
if (err.type == 'popup_failed_to_open') {
// The popup window is failed to open
... ...
} else if (err.type == 'popup_closed') {
// The popup window is closed before an OAuth response is returned
... ...
}
}
const client = google.accounts.oauth2.initCodeClient({
client_id: 'YOUR_GOOGLE_CLIENT_ID',
scope: 'https://www.googleapis.com/auth/calendar.readonly',
ux_mode: 'popup',
callback: myCallback,
error_callback: myErrorCallback
});