رموز الوصول: تصحيح الأخطاء ومعالجتها

الحصول على معلومات حول الرموز المميزة وتصحيح الأخطاء

عند استخدام أحد رموز الوصول، قد تحتاج إلى التحقق من المعلومات المتعلقة به، مثل المستخدم أو وقت انتهاء الصلاحية. وللحصول على هذه المعلومات، يمكنك استخدام أداة تصحيح الأخطاء أو يمكنك استخدام نقطة النهاية لواجهة API.

لاستخدام واجهة API، يمكنك إصدار طلب واجهة Graph API:

curl -i -X GET "https://graph.facebook.com/debug_token?
  input_token={input-token}&
  access_token={valid-access-token}

استبدل {input-token} برمز الوصول الذي ترغب في الحصول على معلومات متعلقة به واستبدل {access-token} برمز وصول صالح. ويجب أن يتم إصدار الرموز المميزة من التطبيق نفسه.

تكون استجابة استدعاء واجهة API عبارة عن مصفوفة بلغة JSON تبدو كما يلي:

{ "data":{ "app_id":"{app-id}", "type":"USER", "application":"{app-name}", "data_access_expires_at":1576687825, "expires_at":1570820400, "is_valid":true, "scopes":[ "pages_show_list", "public_profile" ], "granular_scopes":[ { "scope":"pages_show_list", "target_ids":[ "{page-1-app-can-access-id}", "{page-2-app-can-access-id}" ] } ], "user_id":"10215241773831025" } } 

بالنسبة لرموز الوصول طويلة الأجل، يتم أيضًا إرجاع الحقل issued_at.

معالجة الأخطاء

لن يرسل فيسبوك أي إشعار حول انتهاء صلاحية رمز الوصول. وما لم تكن قد أرسلت وقت expiry إلى تطبيقك وكذلك رمز الوصول، فقد لا يكتشف تطبيقك إلا أن الرمز المميز المتوفر غير صالح عندما تحاول إجراء طلب إلى واجهة API.

وبسبب الأحداث المتعلقة بالأمان، قد يتم إبطال صلاحية رموز الوصول قبل وقت انتهاء الصلاحية المتوقع.

ففي معظم التطبيقات، تُعد أفضل طريقة للتعامل مع الرموز منتهية الصلاحية هي التقاط رسائل الخطأ الصادرة عن واجهة API. في كل حالة، ستقوم واجهة API بإرجاع رسالة خطأ ورمز برمجي ورمز برمجي فرعي من خلال نص بلغة JSON يشرح طبيعة الخطأ. لمزيد من المعلومات حول الرموز البرمجية والرموز البرمجية الفرعية، يرجى الرجوع إلى مستند مرجع رمز الخطأ.

رموز الوصول منتهية الصلاحية أو غير الصالحة

استجابة لعينة من الرموز منتهية الصلاحية

{
  "error": {
    "message": "Error validating access token: Session has expired on Wednesday, 14-Feb-18 18:00:00 PST. The current time is Thursday, 15-Feb-18 13:46:35 PST.",
    "type": "OAuthException",
    "code": 190,
    "error_subcode": 463,
    "fbtrace_id": "H2il2t5bn4e"
  }
}

استجابة لعينة من الرموز غير الصالحة

يتم إرسال الاستجابة عندما يسجّل شخص ما الخروج من تطبيقك أو يجري تغييرًا على كلمة السر الخاصة به.

{
  "error": {
    "message": "Error validating access token: The session is invalid 
                because the user logged out.", 
    "type": "OAuthException", 
    "code": 190,
    "error_subcode": 460,
    "fbtrace_id": "H2il2t5bn4e"
  }
}

سيحتاج الشخص إلى تسجيل الدخول مرة أخرى للحصول على رمز وصول صالح بحيث تتمكّن من إجراء استدعاءات واجهة API نيابة عنه. ويجب أن يحدد دفق تسجيل الدخول الذي يستخدمه تطبيقك للأشخاص الجدد الأسلوب الذي يجب اتباعه.

استجابة لعينة من خطأ في تصريح التطبيق

عندما يلغي شخص ما التصريح أو إذا لم يصرح بتطبيقك مطلقًا، ستكون استجابة الخطأ مماثلة للاستجابة لدى شخص جديد في تطبيقك.

استجابة لعينة من الرموز التي تم إلغاء تصريحها

{
  "error": {
    "message": "Error validating access token: User {user-id} has 
                not authorized application {your-app-id}.", 
    "type": "OAuthException", 
    "code": 190,
    "error_subcode": 458,
    "fbtrace_id": "H2il2t5bn4e"
  }
}
}

معالجة أخطاء الرموز المميزة في تطبيقات بنظام التشغيل iOS

تظهر أخطاء واجهة API في مجموعة iOS SDK بصفة أساسية من خلال مثيلات NSError التي يتم تمريرها إلى عمليات الاستدعاء. لمزيد من التفاصيل، يرجى الرجوع إلى مستندات الأخطاء في مجموعة SDK لنظام التشغيل iOS.

معالجة أخطاء الرموز المميزة في تطبيقات تعمل نظام التشغيل Android

تظهر أخطاء واجهة API في مجموعة Android SDK بصفة أساسية عبر الكائن Response الذي يتم تمريره إلى استدعاء Requests. يمكنك تحديدًا استدعاء response.getError() لاسترداد مثيل FacebookRequestError.

تعرف على المزيد

يمكنك الاطلاع على المزيد من الأخطاء في مرجع أخطاء واجهة API، ولكن هذه الأخطاء الثلاثة هي الأكثر شيوعًا عند التعامل مع رموز الوصول.