تسجيل الدخول للألعاب على فيسبوك

The Web Games on Facebook and Facebook Gameroom platforms are no longer available for new submissions. This documentation is intended solely for developers with existing games. To learn more, read our blog post.

عندما تحاول إنشاء لعبة ليتم لعبها على Facebook.com، فأنت تنشئ بذلك تطبيق ويب سيتم عرضه داخل حاوية iframe على Facebook.com. نظرًا لأن فيسبوك يعرض الألعاب فقط لللاعبين الذين يقومون بتسجيل الدخول، فهذا يعني أنه من المؤكد أن يتوفر لديك مستخدم فيسبوك قد قام بتسجيل الدخول للمصادقة.

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

يوضح هذا المستند النُهج المختلفة لاستخدام تسجيل دخول فيسبوك وكيفية الاستفادة منها على أفضل وجه في لعبتك.

مصادر المصادقة

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

مصادقة مركز التطبيقات

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

زر "اللعب الآن" في مركز التطبيقات

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

راجع دليل مركز التطبيقات لمزيد من التفاصيل.

المصادقة على منصة أخرى

إذا كانت اللعبة تتواجد على منصات الهاتف المحمول، وتدعم تسجيل دخول فيسبوك في إصدار الهاتف المحمول، فمن المحتمل أن تتم مصادقة بعض اللاعبين بالفعل عندما يأتون للعب اللعبة على Facebook.com. من المهم التأكد من أن إصدار اللعبة على Facebook.com يتوقع الحصول على مجموعة الأذونات ذاتها مثل لعبة الهاتف المحمول.

اكتشاف حالة تسجيل الدخول

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

يمكنك اكتشاف ما إذا كان اللاعب قد سجل الدخول إلى لعبتك مسبقًا بإحدى طريقتين:

  • من جانب العميل، باستخدام الأسلوب FB.getLoginStatus() في مجموعة JS SDK
  • من جانب الخادم، من خلال فك تشفير signed_request

استخدام مجموعة Facebook SDK للغة JavaScript

من خلال استدعاء FB.getLoginStatus() عند تحميل المستند، يمكنك ضمان تسجيل دخول اللاعب فورًا عند تحميل اللعبة. ويمكنك حينها استخدام FB.api() للوصول إلى حالة اللعبة لدى اللاعب عبر معرف المستخدم، واسترداد المعلومات المستخدمة لإضفاء طابع شخصي، مثل اسم اللاعب وصورة الملف الشخصي وقائمة الأصدقاء.

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    // the user is logged in and has authenticated your
    // app, and response.authResponse supplies
    // the user's ID, a valid access token, a signed
    // request, and the time the access token 
    // and signed request each expire
    var uid = response.authResponse.userID;
    var accessToken = response.authResponse.accessToken;
  } else if (response.status === 'not_authorized') {
    // the user is logged in to Facebook, 
    // but has not authenticated your app
  } else {
    // the user isn't logged in to Facebook.
  }
 }); 

إذا لم يقم اللاعب بتسجيل الدخول، فيمكنك استدعاء FB.login(...) لعرض إصدار مشروط لمربع حوار تسجيل الدخول في أعلى شاشة البدء في اللعبة. يحب أن يكون استدعاء مربع الحوار هذا هو أسلوب الاستدعاء ذاته الذي تستخدمه عند استدعاء FB.getLoginStatus

استخدام طلب موقّع

عند تحميل اللعبة على Facebook.com، يتم إرسال طلب HTTP POST إلى عنوان URL لألعاب فيسبوك على الويب. وسيحتوي طلب POST هذا على بعض المعلمات، بما في ذلك المعلمة signed_request التي يمكنك استخدامها لمنح التصريح.

يتم تشفير المعلمة signed_request باستخدام base64url وتوقيعها بإصدار HMAC التابع للمفتاح السري للتطبيق، استنادًا إلى مواصفات OAuth 2.0.

هذا يعني أنه عند تنفيذ طلب POST في التطبيق، ستحتاج إلى تحليله والتحقق منه قبل أن تتمكن من استخدامه. ويتم تنفيذ ذلك في ثلاث خطوات:

  1. تقسيم الطلب الموقّع إلى جزأين يفصل بينهما حرف "." (مثل، 238fsdfsd.oijdoifjsidf899)
  2. فك تشفير الجزء الأول - التوقيع المشفّر - من base64url
  3. فك تشفير الجزء الثاني - حمولة البيانات - من base64url، ثم فك تشفير كائن JSON الناتج

يمكن اتباع هذه الخطوات أي لغة برمجة حديثة. فيما يلي مثال بلغة PHP:

function parse_signed_request($signed_request) {
  list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

  $secret = "appsecret"; // Use your app secret here

  // decode the data
  $sig = base64_url_decode($encoded_sig);
  $data = json_decode(base64_url_decode($payload), true);

  // confirm the signature
  $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
  if ($sig !== $expected_sig) {
    error_log('Bad Signed JSON signature!');
    return null;
  }

  return $data;
}

function base64_url_decode($input) {
  return base64_decode(strtr($input, '-_', '+/'));
}

سيؤدي ذلك إلى إرجاع كائن JSON يبدو كما يلي:

{
   "oauth_token": "{user-access-token}",
   "algorithm": "HMAC-SHA256",
   "expires": 1291840400,
   "issued_at": 1291836800,
   "user_id": "218471"
}

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

المصادقة لأول مرة

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

Happy Acres، والتي تستخدم خلفية مخصصة عند تسجيل الدخول

تسجيل الدخول من جانب العميل عبر مجموعة JS SDK

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

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

نتيجة لذلك، يمكنك استخدام FB.getLoginStatus() للتحقق مما إذا كان اللاعب الحالي قد قام بمصادقة لعبتك من قبل، وإذا لم يكن الأمر كذلك، فيمكنك على الفور عرض مربع الحوار تسجيل الدخول أعلى محتوى اللعبة من خلال استدعاء FB.login()، من دون الحاجة إلى عرض زر "تسجيل الدخول".

راجع أدناه للاطلاع على أحد الأمثلة:

// Place following code after FB.init call.

function onLogin(response) {
  if (response.status == 'connected') {
    FB.api('/me?fields=first_name', function(data) {
      var welcomeBlock = document.getElementById('fb-welcome');
      welcomeBlock.innerHTML = 'Hello, ' + data.first_name + '!';
    });
  }
}

FB.getLoginStatus(function(response) {
  // Check login status on load, and if the user is
  // already logged in, go directly to the welcome message.
  if (response.status == 'connected') {
    onLogin(response);
  } else {
    // Otherwise, show Login dialog first.
    FB.login(function(response) {
      onLogin(response);
    }, {scope: 'email'});
  }
});

الخطوات التالية

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

يُعد تسجيل الدخول هو الخطوة الأولى نحو الاستفادة من العديد من هذه الميزات، ويمكنك إنشاؤه باستخدام المنتجات أدناه:

اطّلع على أفضل ممارسات الألعاب على فيسبوك لمزيد من النصائح حول استخدام تسجيل دخول فيسبوك بشكل فعّال في اللعبة.