التعامل مع الأخطاء

قد تحدث أخطاء في طبقات مختلفة. قد يتم إعلامك بطرق مختلفة حسب مكان حدوث الخطأ.

مَعلمات 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
});