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

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

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