استخدام منصة الفيس بوك لانتساب الأعضاء
بواسطة dev بتاريخ أغسطس 08, 2010 القسم PHP, دروس وتعليمالسلام عليكم ورحمه الله وبركاته
زوار عقل البرمجة حياكم الله
درسنا اليوم هو عن طريقة استخدام منصة الفيس بوك كتطبيق خاص ببرنامجك للأعضاء
الخطوة الأولي : الإعداد
- إنشاء قاعده البيانات
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`oauth_provider` varchar(10),
`oauth_uid` text,
`username` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
شرح سريع : لقد قمنا بإنشاء جدول يحتوي علي الاسم فقط للمستخدم يمكنك أنت تطوير العمل لتضيف مثلا تاريخ الميلاد والبريد والصورة الشخصية وغيرها
الجدول يتضمن حقلين هامين وهما oauth_provider و oauth_uid وذلك لتعريف ان المنصة المستخدمه هي facebook تخيل انك بعد ايام اردت اضافة توتير الي جانب الفيس بوك بالطبع غير المنطقي ان تقوم باضافة جدول جديد للاعضاء ولكن كل ماعليك فقط هو استخدام provider الي twitter
- انشاء تطبيق الفيس بوك
الآن بعد ان قمنا بانشاء قاعده البيانات نأتي الي الخطوة الثانية بالإعداد وهي انشاء تطبيق علي موقع الفيس بوك قم باتباع الرابط التالي
http://www.facebook.com/developers/createapp.php
قم باختيار اسم للبرنامج الخاص بك ثم قم بالموافقة علي شروط الفيس بوك واضعط انشاء البرنامج
بعد ذلك قم بالذهاب الي اعدادت البرنامج ستجد الصورة التالية
لاحظ وجود بالصورة السابقة كل من API Key Secret هذا ماسوف نحتاجه لنتمكن من التواصل مع الفييس بوك من خلال برنامجنا الآن بالقائمة قم بالذهاب الي
Canvas لنقوم من خلالها بتعديل الروابط الخاصة بالبرنامج
1- الرابط الخاص بالحساب ” اختر اسم للحساب ”
2- قم بوضع الرابط الخاص بك من خلال اللوكال هوست localhost او قم بوضعه برابط نطاقك اذا كنت تمتلك النطاق قم بتكرار الرابط بالخياراين
بعد ذللك قم بالذهاب الي قسم Connect من القائمة ايضاً قم بتعديل الرابط الي نفس الرابط السابق مثال كما بالصورة التالية
الي هنا تم انشاء البرنامج بنجاح عليك فقط بحفظ الاعدادت
الآن عليك بحفظ مكتبة الفيس بوك الخاص بالتعامل مع PHP من هنا
http://github.com/facebook/php-sdk/downloads
بعد ذلك قم بفك الضغط عنها وقم بأخذ ملف facebook.php وقم باضافتها لمجلد facebook ب السيرفر المحلي
2- الإتصال مع الفيس بوك
الآن بعد ان قمنا بعملية انشاء قاعده البيانات وانشاء البرنامج علي الفيس بوك سوف نقوم بانشاء عملية التواصل والإرتباط مع الفيس بوك
قبل ان نقوم بانشاء الملفات دعني اوضح كيف تتم عملية التواصل تعتمد عملية التواصل علي ثلاث خطوات
1- البرنامج الخاص بك script يقوم بانشاء رابط مع الفيس بوك يساله عن الصلاحيات المتاحة
2- الفيس بوك يقوم بالرد عليك عن طريق الرابط الذي تم كتابته في Canvas بمتغيرات في GET
3- تقوم بالتحقق من المدخلات الناتجة من الفيس بوك واضافه الجلسة
دعنا نقوم بجولة سريعة لانشاء نموزج انتساب وتسجيل الدخول
بداية نقوم بانشاء ملف facebook_login.php
بداية نقوم بجلب مكتبة الفيس بوك
# جلب مكتبة الفيس بوك
require("facebook.php");
الآن نقوم بانشاء الكائن باستدعاء الكلاس
# طلب الكلاس $facebook = new Facebook(array( 'appId' => 'الرقم الناتج من انشاء البرنامج بالفيس بوك', 'secret' => 'كذلك مثل السابق', 'cookie' => true ));
لاحظ عليك باضافة رقم البرنامج الذي تحصل عليه من الفيس بوك سوف تجد عليه خط أحمر بالصورة رقم 2
الآن دعنا ان نقوم بالتحقق من وجود جلسه بالفعل أم لا
$session = $facebook->getSession();
if(!empty($session)) {
# اذا كانت هناك جلسه بالفعل قم بتجربة جلب رقم العضوية
try{
$uid = $facebook->getUser();
$user = $facebook->api('/me');
} catch (Exception $e){}
if(!empty($user)){
# اذا كان عضو بالفعل قم بطباعه المعلومات
print_r($user);
} else {
# للتجربة فقط في حالة كانت هناك مشكلة قم بطباعه رسالة
die("عفواً هناك خطأ");
}
} else {
# لايوجد جلسه قم بانشاء جلسة جديدة
$login_url = $facebook->getLoginUrl();
header("Location: ".$login_url);
}
الآن دعنا نقوم بتجربة العمل قم بالذهاب الي عنوان الملف مثال لدينا
http://localhost/facebook/facebook_login.php
في حالة ظهرت لك رسالة من الفيس بوك للتحقق اذن انت تسير بخطوات صحيحة ان لم يظهر ذلك فأنت لديك خطأ

الخطوة الثالثة : الإنتساب والتحقق
في هذه الخطوة سوف نتعامل مع قواعد البيانات
ملحوظة هامة : رجاء الانتباه لم أقم بكتابة كود نظيف من حيث الحماية أو الترتيب وذلك لانني فقط اقوم بالشرح انتبه دائماً لكي يكون الكود الخاص بك مثال
بداية قم بانشاء تواصل بقاعده البيانات بالطريقة المعروفة
mysql_connect('localhost', 'root', '');
mysql_select_db('facebook');
الآن سوف نقوم بالتعامل مع $session اي الجلسة التي تم انشائها بالخطوة السابقة
# في حالة اننا لدينا جلسة بالفعل
// نقوم بالتحقق اذا كان العضو متوفر لدينا بقاعده البيانات من قبل أم لا
$query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid = ". $user['id']);
$result = mysql_fetch_array($query);
# اذا كان غير متوفر من قبل فقط نقوم باضافته الي قاعده البيانات
if(empty($result)){
$query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username) VALUES ('facebook', {$user['id']}, '{$user['name']}')");
$query = mysql_query("SELECT * FROM users WHERE id = " . mysql_insert_id());
$result = mysql_fetch_array($query);
}
لاحظ عندما قمت بالبحث بقاعده البيانات قمت بالبحث عن البروفايدر provider فيس بوك facebook وذلك فكرة جيدة اذا اردت تطبيق اخر مثال تويتر وغيرهم فكل ماعليك هو تغيير البروفيدر فقط
الآن الناتج من العملية السابقة هو المتغير $result وهو متغير يحتوي علي كافة معلومات العضو المطلوبة لدينا
بالخطوة السابقة كان لدينا
if(!empty($user)){
كل ماعلينا فعله حالياً هو اضافة حالة if جديدة
if(empty($result)){
ونقوم بداخلها باضافة قيم المتغيرات الي الجلسة
$_SESSION['id'] = $result['id'];
$_SESSION['oauth_uid'] = $result['oauth_uid'];
$_SESSION['oauth_provider'] = $result['oauth_provider'];
$_SESSION['username'] = $result['username'];
الآن اذا اردت طباعه اسم المستخدم بأي صفحة اخري فلتكتب
echo 'Welcome ' . $_SESSION['username'];
الخطوة الرابعه : صلاحيات أكثر وطرق اخري
بعد ان قمنا باضافة العضو بقاعده البيانات وتمت عملية الانتساب وتسجيل الدخول
الآن علينا ان نري ما الذي يمكننا فعله ايضاً فمثلا ماذا اذا اردت جلب اسم المستخدم وبريده وتاريخ ميلاده والصورة الرمزية وغيرها !
اذا اردت بالفعل هذه المعلومات فانت بحاجة للتعامل مع users.getInfo method دعنا نري مثال
$uid = $facebook->getUser();
$api_call = array(
'method' => 'users.getinfo',
'uids' => $uid,
'fields' => 'uid, first_name, last_name, pic_square, pic_big, sex'
);
$users_getinfo = $facebook->api($api_call);
كما هو موضح بالاعلي عن طريق النظر لقد قمت بطلب الاسم الاول والاسم الاخير والصورة الصغيرة والكبيرة لملف العضو وجنس العضو ماذا اذا اردت معلومات اكثر عليك باضافتها للقائمة اليك من خلال هذا الرابط قائمة بكافة المعلومات التي يمكنك جلبها
http://wiki.developers.facebook.com/index.php/Users.getInfo#Response
هل لم تحقق لك هذه المعلومات المطلوب بشكل صحيح !! اذن انت تحتاج للمزيد كمثال اخر فيديو وغيرها اذن علينا باستخدام تقنيه FQl
هذه التقنيه قام بابتكارها مسؤولي فيس بوك وهي تمكنك من البحث بقاعده البيانات بطريقة SQl اذن انت سوف تتحكم بقاعده بيانات فيس بوك فيما يختص بالعضو وكلنا كمبرمجين يعلم ان هذا سوف يصل بك الي كافة المعلومات فأنت الآن تمتلك قاعده البيانات
$uid = $facebook->getUser();
$fql_query = array(
'method' => 'fql.query',
'query' => 'SELECT uid, first_name, last_name, pic_square, pic_big, sex FROM user WHERE uid = ' . $uid
);
$fql_info = $facebook->api($fql_query);
اذن كيف لي ان اعرف تكوين قاعده البيانات
اليك هنا قائمة باسماء الجداول المسموح لك الوصول اليها
http://developers.facebook.com/docs/reference/fql/
الأمر ممتع أليس كذلك !
صلاحيات أكثر
فيس بوك يعمل دائماً علي احترام خصوصية مستخدميه لذلك هو لايسمح لك بكل الاحيان بالوصول الي كافة معلومات المستخدم اذا طلب المستخدم ذلك ولكنك احيانا تريد ان تجبر المستخدم مثلا علي عرض البريد الإلكتروني في هذه الحالة سوف تطلب من المستخدم اضافة صلاحيات اكثر دعنا نوضح ذلك بالكود التالي
$uid = $facebook->getUser();
$url = $facebook->getLoginUrl(array(
'req_perms' => 'email,user_birthday,status_update,publish_stream,user_photos,user_videos'
));
header("Location: {$url} ");
اذا قرات الكود الأعلي ستجد انه يحتوي علي req_perms وهي معلومات مطلوبة ولايمكن تمام الانتساب بدونها منها علي سبيل المثال البريد وتاريخ الميلاد
ممتاز اذن ربما يقوم العضو برفض اعطائك الصلاحية دعنا نقوم بعرض رسالة للعضو تظهر له في حالة قام برفض الصلاحيات
$url = $facebook->getLoginUrl(array(
'req_perms' => 'email',
'next' => 'http://localhost.com/facebook/thanks.php',
'cancel_url' => 'http://localhost.com/facebook/sorry.php'
));
في هذه الحالة سوف تظهر لك رسالة من فيس بوك تطلب منك السماح بالصلاحية
معلومات هامة يجب ان تعلمها
- يستطيع العضو ازالة صلاحية التواصل مع موقعك بضغطتين زر فقط من خلال الفيس بوك فيجب عليك ان تقوم بمراجعه مالذي يجب فعله اذا لم يعد يسمح لك العضو بالاتصال بملفه بالفيس بوك
- يمكنك حذف البرنامج الخاص بك من خلال الفيس بوك بكل بساطة
استنتاج
الاتصال مع الشبكات الإجتماعية امر مميز حقاً ان تضيفة الي برنامجك وخاصة مع وجود ملايين المستخدمين بالفيس بوك ولكن مالذي سيحدث عندما لايمتلك الزائر عضوية بالفيس بوك
اذن عليك ان لا تستغني عن نموزج التسجيل بموقعك ولتجعل اضافة الفيس بوك او اي شبكة اجتماعية اخري مجرد اضافة لك وليس اكثر
تم بحمد الله
تمت الترجمة بواسطة فريق عقل البرمجة
http://dev.3ql.com
شكراً لكم






مشكله فى كل الموقع فى الملفات الديمو وملفات التحميل
التصاريح
Forbidden
403
عذراً علي الخلل تم اصلاح الأمر