تسجيل دخول فيسبوك للأجهزة

إذا كنت تبحث عن المساعدة حول أجهزة Portal من فيسبوك، فيرجى زيارة مركز مساعدة Portal.

لإدخال رمز فيسبوك للأجهزة حتى تتمكّن من تسجيل الدخول إلى التلفزيون الذكي والكاميرا والطابعة وغيرها من الأجهزة، تفضل بزيارة صفحة فيسبوك للأجهزة.

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

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

إذا كنت تنشئ تطبيق تلفزيون لجهاز AppleTV أو Android TV أو Fire TV، فيجب استخدام مجموعة Facebook SDK لنظام tvOS أو مجموعة Facebook SDK لنظام Android.

يوضح هذا الدليل التكامل اليدوي لتسجيل دخول الجهاز دون استخدام مجموعات SDK الموضحة أعلاه.

تجربة المستخدم

تصف هذه الإرشادات كيفية تصميم تجربة تسجيل دخول واضحة وآمنة ومتسقة عبر كل الأجهزة والخدمات.

1. الدعوة لاتخاذ إجراء

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

لضمان توفير تجربة مستخدم أكثر قابلية للاستخدام واتساقًا ومصداقية، قم بتصميم الزر ليتشابه قدر الإمكان مع زر تسجيل دخول فيسبوك الرسمي.

من وجهة نظر التصميم المرئي، يعني ذلك أنه عليك

  1. كتابة "تسجيل الدخول بحساب فيسبوك" أو "الاتصال بحساب فيسبوك" على الزر.
  2. استخدام اللون الأبيض مع لون علامة فيسبوك التجارية الأزرق الرسمي: #1877F2.
  3. إذا كان جهازك يدعم عرضًا رسوميًا، يمكنك أيضًا تضمين الشعار "f" الرسمي. ووفقًا لإرشادات علامة فيسبوك التجارية، يجب أن يكون الشعار دومًا إما باللون الأبيض أو باللون الأزرق لفيسبوك (#1877F2).

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

2. عرض الرمز

عندما ينقر الشخص على زر الدعوة لاتخاذ إجراء، يُجري جهازك عملية استدعاء لواجهة API فيسبوك التي تعرض الرمز البرمجي.

في واجهتك، أخبر الأشخاص أنهم يحتاجون لزيارة موقع على الويب وإدخال الرمز مع الرسالة التالية، "بعد ذلك، تفضل بزيارة facebook.com/device (http://facebook.com/device) من جهاز الكمبيوتر أو الهاتف الذكي وأدخل هذا الرمز". اعرض الرمز الكامل الذي تلقيته من واجهة API تسجيل دخول فيسبوك للأجهزة. يتراوح طول الرمز بين 6 و12 حرفًا.

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

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

يمكن أيضًا إنشاء رموز QR باستخدام رمز المستخدم المُدمج في عنوان URL. ويتم هذا من خلال إضافة المعلمة user_code إلى عنوان URL:

https://www.facebook.com/device?user_code=<USER_CODE>

3. التفويض

هذا هو الدفق الذي يراه الأشخاص عند انتقالهم إلى facebook.com/device من متصفح جهاز الكمبيوتر أو الهاتف المحمول. في البداية، سيظهر حقل نصي يمكنهم إدخال الرمز فيه:

بعد إدخال الرمز والنقر على Continue، يمكن للأشخاص اختيار الأذونات التي يريدون منحها:

وهكذا يعلم الأشخاص أن عملية تسجيل الدخول ناجحة وتظهر لهم رسالة تأكيد:

4. تأكيد نجاح تسجيل الدخول

في واجهة جهازك، ينبغي أن تعرض أيضًا رسالة تأكيد. وتتضمن في الوضع الأمثل اسم الشخص إن أمكن وصورة ملفه الشخصي على فيسبوك.

اعرض رسالة التأكيد هذه بجهازك إلى أن ينقر الشخص على الزر Continue. وقد يضطر أحد الأشخاص لإدخال الرمز في جهاز كمبيوتر موجود في موقع آخر، لذا فقد يحتاج للعودة إلى جهازك والاطلاع على رسالة التأكيد قبل المتابعة.

بعد أن ينقر الشخص على Continue، يمكن لجهازك أن يعرض تجربة مخصصة رائعة.

5. تسجيل الخروج أو قطع الاتصال

يجب أن يتمكّن الأشخاص من تسجيل الخروج من جهازك ويجب على الجهاز عدم تخزين اتصالهم بفيسبوك. للقيام بذلك، قم بتوفير خيار Log out from Facebook أو Disconnect from Facebook في قائمة جهازك.

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

بعد تسجيل الشخص خروجه، ينبغي أن يعرض جهازك زر الدعوة لاتخاذ إجراء الأولي الخطوة 1.

تنفيذ تسجيل الدخول للأجهزة

تسجيل فيسبوك للأجهزة مخصص للأجهزة التي تجري استدعاءات HTTP مباشرة عبر الإنترنت. نعرض فيما يلي استدعاءات واجهة API والاستجابات التي يمكن لجهازك تنفيذها.

1. تمكين تسجيل الدخول للأجهزة

قم بتحميل لوحة معلومات التطبيق وتغيير قيمة المنتج > تسجيل دخول فيسبوك > الإعدادات > تسجيل الدخول من الأجهزة إلى 'نعم'.

2. إنشاء رمز

عندما ينقر الشخص على زر الدعوة لاتخاذ إجراء Connect to Facebook أو Log in with Facebook، ينبغي على جهازك إجراء طلب HTTP POST على:

POST https://graph.facebook.com/v2.6/device/login
       access_token=<YOUR_APP_ID|CLIENT_TOKEN>
       scope=<COMMA_SEPARATED_PERMISSION_NAMES> // e.g. public_profile,user_likes
       redirect_uri=<VALID_OAUTH_REDIRECT_URL>

تُعد المعلمة scope اختيارية ويجب أن تحتوي على قائمة مفصولة بفاصلة تتضمن أذونات تسجيل الدخول التي تمت الموافقة على استخدامها أثناء مراجعة تسجيل الدخول.

ويمكنك الحصول على CLIENT_TOKEN من App Settings (إعدادات التطبيق) -> Advanced (متقدم)، ويجب دمجها مع معرف التطبيق (مفصولة بعلامة |) من أجل صياغة access_token الكامل.

المعلمة redirect_uri اختيارية. عند تقديم عنوان URL، تتم إعادة توجيه الشخص إلى عنوان URL بعد إتمام عملية تسجيل الدخول بنجاح. ويتيح لك ذلك تشجيع الشخص على تسجيل الدخول إلى موقع الويب الخاص بتطبيقك من أجل إدارة الحساب بشكل إضافي. يجب أن يكون عنوان URL هذا عبارة عن OAuth لإعادة توجيه URL طبقًا لما تم تكوينه في App Settings (إعدادات التطبيق) -> Advanced (متقدم). تظهر الاستجابة بالشكل التالي:

{
  "code": "92a2b2e351f2b0b3503b2de251132f47",
  "user_code": "A1NWZ9",
  "verification_uri": "https://www.facebook.com/device",
  "expires_in": 420,
  "interval": 5
}

تعني هذه الاستجابة ما يلي:

  1. اعرض السلسلة "A1NWZ9" على جهازك
  2. اطلب من الشخص الانتقال إلى "facebook.com/device" وأدخل هذا الرمز البرمجي
  3. تنتهي صلاحية الرمز خلال 420 ثانية. يجب إلغاء دفق تسجيل الدخول بعد هذه الفترة إذا لم تتلقى رمز الوصول
  4. ينبغي على جهازك فحص حالة واجهة API تسجيل الدخول للأجهزة كل 5 ثوانٍ إذا نجح التصريح.

3. عرض الرمز

ينبغي أن يعرض جهازك user_code وأن يطلب من الأشخاص زيارة verification_uri ، مثل facebook.com/device على أجهزة الكمبيوتر أو الهواتف الذكية. راجع تجربة المستخدم.

4. فحص حالة التصريح

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

POST https://graph.facebook.com/v2.6/device/login_status
       access_token=<YOUR_APP_ID|CLIENT_TOKEN>
       code=<LONG_CODE_FROM_STEP_1> // e.g. "92a2b2e351f2b0b3503b2de251132f47"

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

الرمز الفرعي للخطأ نموذج للاستجابة المعنى

N/A

{"access_token": "ABCD...", "expires_in" : 5183996 }

نجح المستخدم في تفويض جهازك. يمكن للجهاز الآن استخدام القيمة access_token لإجراء استدعاءات واجهة API مفوّضة.

1349174

{"error":{"message":"This request requires the user to take a pending action","code":31,"error_subcode":1349174,"error_user_title":"Device Login Authorization Pending","error_user_msg":"User has not yet authorized your application. Continue polling."}}

لم يمنح المستخدم تفويضًا لتطبيقك. تابع فحص الحالة بالمعدل المحدد في الاستجابة الواردة ضمن الخطوة 1.

1349172

{"error":{"message":"User request limit reached","code":17,"error_subcode":1349172,"error_user_title":"OAuth Device Excessive Polling","error_user_msg":"Your device is polling too frequently. Space your requests with a minium interval of 5 seconds."}}

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

1349152

{"error":{"message":"The session has expired""code":463,"error_subcode":1349152, "error_user_title":"Activation Code Expired","error_user_msg":"The code you entered has expired. Please go back to your device for a new code and try again."}}

انتهت صلاحية رمز الجهاز. قم بإلغاء دفق تسجيل الدخول للجهاز وأعد المستخدم إلى الشاشة الأولى.

5. تأكيد نجاح تسجيل الدخول

عندما تتلقى رمز وصول، يكون الشخص قد منح التصريح لتطبيقك بنجاح. ينبغي عليك الاحتفاظ برمز الوصول هذا في الجهاز.

ومن أجل أن يعلم الشخص أن عملية تسجيل الدخول قد نجحت، ينبغي أن يعرض جهازك اسم الشخص وصورة ملفه الشخصي إن وجدت حتى ينقر على Continue. للحصول على اسم الشخص وصورة ملفه الشخصي، ينبغي على جهازك إجراء استدعاء قياسي لواجهة Graph API:

GET https://graph.facebook.com/v2.3/me?
      fields=name,picture&amp;
      access_token=<USER_ACCESS_TOKEN>

ستحصل على استجابة بالشكل التالي:

{
  "name": "John Doe", 
  "picture": {
    "data": {
      "is_silhouette": false, 
      "url": "https://fbcdn.akamaihd.net/hmac...ile.jpg"
    }
  }, 
  "id": "2023462875238472"
}

اعرض اسم الشخص وصورة ملفه الشخصي إلى أن ينقر على Continue بجهازك.

6. تخزين رموز الوصول

ينبغي على جهازك الاحتفاظ برمز الوصول لإجراء الطلبات الأخرى لواجهة Graph API.

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

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

استكشاف الأخطاء وإصلاحها

هل يمكنني إجراء طلبات دفق الأجهزة عبر HTTP؟
OAuth 2 تتطلب TLS/HTTPS.

هل يمكنني إجراء طلبات دفق أجهزة باستخدام أسلوب GET؟
يجب أن تكون كل طلبات دفق الأجهزة هي طلبات POST.

كيف يمكنني تحديث رمز وصول تسجيل دخول الجهاز؟
قد تكون رموز وصول تسجيل دخول الجهاز صالحة لفترة تصل إلى 60 يومًا كحد أقصى.

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

للتعرف على المزيد حول تحديث الرموز، راجع رموز الوصول.

تظهر لي رسالة الخطأ Invalid API method عند إجراء طلب POST، فما المشكلة؟
إذا كنت تجري طلب POST وتظهر لك رسالة خطأ كما يلي:

{"error":{"message":"Invalid API method","type":"OAuthException","code":3}}

قد تحتاج إلى تمكين تسجيل الدخول من الأجهزة في تطبيقك.

قم بتحميل لوحة معلومات التطبيق وتعيين قيمة المنتج > تسجيل دخول فيسبوك > الإعدادات > تسجيل الدخول من الأجهزة إلى 'نعم'.

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