จัดการข้อผิดพลาด

ข้อผิดพลาดอาจเกิดขึ้นในเลเยอร์ต่างๆ คุณอาจได้รับการแจ้งเตือนด้วยวิธีต่างๆ โดยขึ้นอยู่กับตำแหน่งที่เกิดข้อผิดพลาด

พารามิเตอร์ OAuth ที่จําเป็น

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

ข้อผิดพลาดในคอนโซล JavaScript

แก้ไขข้อผิดพลาดในการกําหนดค่า OAuth

คุณอาจต้องทําการเปลี่ยนแปลงในคอนโซล Google API เพื่อแก้ไขข้อผิดพลาดบางรายการ

ค่าพารามิเตอร์ OAuth ไม่ถูกต้อง

หากคุณตั้งค่าพารามิเตอร์ OAuth เป็นค่าที่ไม่ถูกต้อง เช่น รหัสไคลเอ็นต์ ตัวระบุขอบเขต หรือค่าประเภทคำตอบที่ไม่ถูกต้อง คุณจะเห็นหน้าข้อผิดพลาด OAuth

ข้อผิดพลาด OAuth

การตอบกลับข้อผิดพลาด OAuth

OAuth อาจแสดงการตอบกลับข้อผิดพลาด ซึ่งในกรณีนี้ ฟังก์ชัน callback จะทริกเกอร์โดยใช้การตอบกลับข้อผิดพลาดเป็นพารามิเตอร์ ตัวอย่างการตอบกลับข้อผิดพลาด OAuth มีดังนี้

  {
    "error":"access_denied"
  }

ตัวอย่างเช่น

  1. ผู้ใช้ปฏิเสธคําขอ OAuth
  2. สําหรับคําขอ OAuth ที่มีพารามิเตอร์ prompt=none ระบบยังไม่ได้ตรวจสอบสิทธิ์ผู้ใช้และยังไม่ได้กําหนดค่าความยินยอมล่วงหน้าสําหรับขอบเขตที่ขอ

ตัวอย่างนี้แสดงวิธีจัดการกับการตอบกลับ OAuth ที่สำเร็จและข้อผิดพลาด

function myCallback(response) {
  if (response.error) {
    // Handle error response
    ... ...
  } else if (response.code) {
    // Handle success code response
    ... ...
  }
}

ข้อผิดพลาดที่ไม่ใช่ OAuth

OAuth จะไม่กำหนดลักษณะการทำงานในกรณีต่อไปนี้

  1. หน้าต่างป๊อปอัปเปิดไม่สำเร็จ
  2. หน้าต่างป๊อปอัปปิดไปก่อนที่ระบบจะแสดงการตอบกลับ 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
});