ข้อผิดพลาดอาจเกิดขึ้นในเลเยอร์ต่างๆ คุณอาจได้รับการแจ้งเตือนในรูปแบบต่างๆ โดยขึ้นอยู่กับตำแหน่งที่เกิดข้อผิดพลาด
ไม่มีพารามิเตอร์ OAuth ที่จําเป็น
หากลืมตั้งค่าพารามิเตอร์ OAuth ที่จําเป็น เช่น client_id หรือ scope คุณจะเห็นข้อความแสดงข้อผิดพลาดดังด้านล่างในคอนโซล JavaScript ของเบราว์เซอร์
แก้ไขข้อผิดพลาดในการกําหนดค่า OAuth
คุณอาจต้องทําการเปลี่ยนแปลงในคอนโซล Google API เพื่อแก้ไขข้อผิดพลาดบางรายการ
- สร้างรหัสไคลเอ็นต์ หากยังไม่มี
- สําหรับ 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
});