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

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

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

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