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

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

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

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

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

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

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

ค่าพารามิเตอร์ 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
});