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