الهدف من الموضوع:
كثيرا من المواقع تقوم بعمل نظام عضويات للاعضاء, ونظام العضويات يختلف من موقع وللاخر, وقد يتعب المبرمج فى برمجته, ولكن لماذا لا نوفر الوقت لما هو أهم, ونستخدم الfacebook الرائع ليقوم لنا بهذه المهمه, وأعتقد لايوجد أقوى تسجيل دخول وتوثيق أقوى من هذه المواقع العملاقه لذلك دعنا نشوف فكرة الدرس بشىء مبسط انظر للصوره
اولا: علينا ان نقوم في هذا الدريس ببعض الخطوات وأولا لابد ان نقوم بانشاء قادعه بيانات لتخزين العضويات الموثقه من الفيس بوك
ثانيا نقوم بإنشاء الـ application الذي سوف نقوم بإنشاءه علي الفيس بوك للإتصال به من أجل عمليه التوثيق
ثالثا: نقوم بتنزيل مكتبه الفيس بوك + عمل صفحة الدخول وشرح فكرتها البرمجية
رابعا: نقوم بتحربه الإتصال ورؤيه ناتج التوثيق للدخول الي الصفحه المحميه
خامسا: قم بمعرفه المشاكل التي من الممكن ان تواجهك وقم بحلها
قاعدة البيانات : وهى سوف تكون قاعدة لتخزين العضويات الموثقه بالفعل ودخلت لموقعك على الصفحة المحميه
[html] 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;
[/html]
2- سوف تذهب بعدها لصفحة اعداد البرنامج, وستجد اولا انه معطيك مفتاح وكلمة السر لبرنامج
-نكمل الاعدادت من اليسار اختار canvas ثم نكتب صفحة التوجيه للبرنامج , ولنفرض انها ستكون على السيرفر المحلى مثل ما بالصوره, ولا تنسى علامة ? فى اخر الرابط لانها مهمه
-نكمل واضغط من اليسار على connect , ونكتب اعدات الاتصال
احفظ الاعدادات , وبهيك يكون برنامج الاتصال جاهز للاستخدام ملاحظه: يمكنك الرجوع لاعدادت البرنامج وتغييرها فى اى وقت من خيار Myapplications على صفحتك الخاصه على الفيس بوك
ثالثا: تنزيل مكتبة الفيس بوك +عمل صفحة الدخول وشرح فكرتها البرمجيه 1-انزل المكتبه من هذا الرابــــــط 2-الحين نريد انشاء صفحة الدخول اللى راح تضعها فى موقعك من أجل توثيق دخولهم للصفحة المحمية اولا: دعونا نعرف فكرة هذه الصفحه
ثانيا: هذا هو ملف كاملا مشروحا فوق كل عباره وظيفة الدوال و الفانكش :
session_start();
if(!empty($_SESSION)){
header("Location: home.php");
}
mysql_connect(‘localhost’, ‘root’, ‘root’);
mysql_select_db(‘facebook’);
# استدعاء رابط المكتبه
require("facebook.php");
# تجهيز بيانات الدخول لبرنامج على الفيس بوك
$facebook = new Facebook(array(
‘appId’ => ‘id رقم ال’,
‘secret’ => ‘باسورد البرنامج’,
‘cookie’ => true
));
# التحقق من وجود جلسه ام لا
$session = $facebook->getSession();
if(!empty($session)) {
# لو وجدت جلسه راح نجلب رقمها وبياناتها user id (getUser()) and user info (api->(‘/me’))
try{
$uid = $facebook->getUser();
$user = $facebook->api(‘/me’);
} catch (Exception $e){}
if(!empty($user)){
# توجد جلسه, دعنا نتحقق من عضويه مسجله بالفيس بوك ومخزنه عندنا فى قاعدة البيانات
$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 = msyql_query("SELECT * FROM users WHERE id = " . mysql_insert_id());
$result = mysql_fetch_array($query);
}
// ظبط اعدادت الجلسه
$_SESSION['id'] = $result['id'];
$_SESSION['oauth_uid'] = $result['oauth_uid'];
$_SESSION['oauth_provider'] = $result['oauth_provider'];
$_SESSION['username'] = $result['username'];
} else {
# اذا وجدت خطأ, وقف البرنامج
die("There was an error.");
}
} else {
# اذا لم يوجد جلسه, نقوم بعمل واحده
$login_url = $facebook->getLoginUrl();
header("Location: ".$login_url);
}
[/html]
رابعا: تجربة الاتصال ورؤية ناتج التوثيق للدخول للصفحة المحميه الحين بعد ان جهزنا ملف login_facebook.php نفتحه على المتصفح وسوف يوجهك للفيس بوك, ليطلب منك التوثيق قبل ان يوجهك للصفحة المحميه اللى راح تحدهها فى الملف السابق عن طريق هذا الكود
[html] if(!empty($_SESSION)){header("Location: home.php");
}
[/html]
النتائج
بعدها راح يوجهنا للصفحة المحميه home.php
شوفتوا البساطه والمتعه
خامسا: المشاكل اللى ممكن تواجهك: طبعا من أهم المشاكل التى واجهتها هى كالاتى
: 1-تعليق الفيس بوك, فقد يواجهك مشكله عمل البرنامج , لذا عليك الانتظار حتى تنظبط
2-تغير بيانات البرنامج, وهذه حدثت معى اول مره , لذا لو واجهتك مشكله وطلعلك error عند تجربه ملف login_facebook.php , يفضل تراجع اعدادت البرنامج خصوصا connect والcanvas هذه أهم المشاكل ……..