رسیدگی به خطاها

خطاها ممکن است در لایه های مختلف رخ دهد. بسته به محل وقوع خطا، ممکن است به طرق مختلف مطلع شوید.

پارامترهای OAuth مورد نیاز وجود ندارد

اگر فراموش کردید که پارامترهای OAuth مورد نیاز، مانند client_id یا scope را تنظیم کنید، پیام خطایی مانند زیر را در کنسول جاوا اسکریپت مرورگر خود مشاهده خواهید کرد.

خطاهای کنسول جاوا اسکریپت

رفع خطاهای پیکربندی 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
});