قد تحدث أخطاء في طبقات مختلفة. قد يتم إعلامك بطرق مختلفة حسب مكان حدوث الخطأ.
مَعلمات OAuth المطلوبة
إذا نسيت ضبط مَعلمات OAuth المطلوبة، مثل client_id أو scope، ستظهر لك رسالة خطأ في "وحدة تحكّم JavaScript" في المتصفّح.

إصلاح أخطاء إعدادات OAuth
قد تكون هناك حاجة إلى إجراء تغييرات في وحدة تحكّم Google APIs لحلّ بعض الأخطاء.
- إنشاء معرّف عميل إذا لم يكن متوفّرًا بعد
- بالنسبة إلى تجربة المستخدم في النوافذ المنبثقة، أضِف جميع النطاقات التي قد تؤدي إلى تشغيل المسار الحالي إلى
Authorized JavaScript origins
. - بالنسبة إلى تجربة المستخدم لإعادة التوجيه، أضِف جميع عناوين URL التي قد تتلقّى ردودًا بشأن منح الإذن إلى
Authorized redirect URIs
. - ضبط شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth بشكلٍ صحيح
- أرسِل تطبيقك لإثبات ملكيته إذا لزم الأمر.
- قد تحتاج إلى اتّخاذ خطوات إضافية من أجل الامتثال لسياسات OAuth 2.0 في Google.
قيم مَعلمات OAuth غير صالحة
في حال ضبط قيم غير صالحة لمعلمات OAuth، مثل معرّف العميل غير الصالح أو معرّفات النطاق أو قيم نوع الرد، ستظهر لك صفحة خطأ OAuth.

ردود أخطاء OAuth
قد يعرض OAuth استجابة خطأ، وفي هذه الحالة، سيتم تشغيل الدالة callback
مع استجابة الخطأ كمعلَمة. في ما يلي مثال على ردّ خطأ OAuth.
{ "error":"access_denied" }
تشمل بعض الأمثلة:
- يرفض المستخدم طلب OAuth.
- بالنسبة إلى طلب OAuth يتضمّن المَعلمة
prompt=none
، لم يتم إثبات هوية المستخدم مسبقًا ولم يسبق له ضبط إعدادات الموافقة على النطاقات المطلوبة.
يوضّح هذا المثال كيفية التعامل مع استجابات OAuth الناجحة والخاطئة:
function myCallback(response) {
if (response.error) {
// Handle error response
... ...
} else if (response.code) {
// Handle success code response
... ...
}
}
أخطاء غير مرتبطة ببروتوكول OAuth
لا يحدّد بروتوكول OAuth السلوكيات في الحالات التالية:
- تعذّر فتح النافذة المنبثقة.
- يتم إغلاق النافذة المنبثقة قبل عرض ردّ 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
});