במאמר הקודם הראיתי איך ליצור אפליקציית פייסבוק שיושבת ב-iframe – ובלשון פייסבוק היא נקראת canvas.
האפליקציה שבנינו נראית כך:
<?php
require 'facebook.php';
// Create our Application instance.
$facebook = new Facebook(array(
'appId' => '103416056376001',
'secret' => '3891bddd024083068c456d0ea9873c72',
'cookie' => true
));
$user = $facebook->getUser(); //האם המשתמש מחובר
$loginUrl = $facebook->getLoginUrl( //קישור לחיבור + ההרשאות המבוקשות
array(
'scope' => 'email,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown'
)
);
if ($user) { //בדיקה אם המשתמש קיים
$fbme = $facebook->api('/me');
print "Welcome User ID: " . $user;
print_r($fbme);
}
else if (!$user) {
echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
exit;
}
מה שהאפליקציה הנחמדה הזו עושה היא לבצע אותנטיקציה ולאחר הרישום היא מציגה בפני המשתמש את השם שלו באמצעות מתודת getUser ומבצעת קריאה ל-API של פייסבוק באמצעות מתודת api (תודו שהשם של המתודה הוא מקורי).
כלומר, לאחר שיש לנו session, אנחנו עושים את הדבר הבא:
$fbme = $facebook->api('/me');
print_r($fbme);
מתודת ה-api היא חשובה מאד, היא מאפשרת לנו ליצור קשר עם Graph API של גוגל ולקבל מידע רב על המשתמש וכן לבצע פעילות. דוקומנטציה (נכון לזמן כתיבת שורות אלו, איומה למדי) נמצאת כאן. בואו וניתן כמה דוגמאות ממנה.
הדוגמא הראשונה היא הקריאה לme/. אובייקט me הוא האובייקט הגלוי של פייסבוק למשתמש ומכיל את כל הפרטים בפרופיל. הייתי מפנה אתכם לתיעוד בדוקומנטציה, אבל אין כזה.
אז במקום זה אני אראה לכם את האובייקט שלי:
Array
(
[id] => 100000847860515
[name] => Ran Bar-Zik
[first_name] => Ran
[last_name] => Bar-Zik
[link] => http://www.facebook.com/rbarzik
[about] => My professional site: https://internet-israel.com
My professional profile:
http://www.linkedin.com/in/barzik
My twitter: http://twitter.com/barzik
Internet Israel Facebook page: http://www.facebook.com/pages/Internet-Israel/381080841390
[location] => Array
(
[id] => 1.13249615354E+14
[name] => Petah Tiqwa, Hamerkaz, Israel
)
[work] => Array
(
[0] => Array
(
[employer] => Array
(
[id] => 1.05554322814E+14
[name] => marketology
)
[location] => Array
(
[id] => 1.05603269475E+14
[name] => Tel Aviv
)
[position] => Array
(
[id] => 1.14106688606E+14
[name] => Leading Web Developer
)
[start_date] => 2010-02
[end_date] => 0000-00
)
)
[education] => Array
(
[0] => Array
(
[school] => Array
(
[id] => 1.05960532778E+14
[name] => Shazar High School
)
[year] => Array
(
[id] => 1.09548059092E+14
[name] => 1991
)
)
[1] => Array
(
[school] => Array
(
[id] => 1.12508188761E+14
[name] => Ben-Gurion University of the Negev
)
[year] => Array
(
[id] => 1.21884554494E+14
[name] => 1998
)
[concentration] => Array
(
[0] => Array
(
[id] => 1.16410538371E+14
[name] => Economist
)
)
)
)
[gender] => זכר
[email] => [email protected]
[timezone] => 3
[verified] => 1
[updated_time] => 2010-06-05T07:52:40+0000
)
זה מה שמתקבל כאשר אני מדפיס את me באמצעות ה-API. אבל אפשר לראות שחסרים פה לא מעט דברים – רשימת החברים שלי, רשימת האירועים שבהם אני משתתף, רשימת הלייקים שעשיתי וכו' וכו'. כל הדברים האלו נקראים בפייסבוקית מדוברת 'קשרים'. ברגע שהוספתי מישהו לחברים שלי, יצרתי קשר ביני לבינו. ברגע שאישרתי, דחיתי או רשמתי אולי על אירוע מסוים יצרתי בינו לביני קשר. את הקשרים האלו גם קל למצוא באמצעות ה-GRAPH API. כך למשל, אם אני רוצה למצוא את הפוסטים האחרונים שכתבתי, עלי לשנות את קריאת ה-api שלי ל:
$fbme = $facebook->api('/me/feed');
ובבת אחת אני אקבל את כל הקיר שכתבתי (25 הודעות אחרונות). אני יכול לקבל עוד פרטי מידע כמו:
Friends: https://graph.facebook.com/me/friends
News feed: https://graph.facebook.com/me/home
Profile feed (Wall): https://graph.facebook.com/me/feed
Likes: https://graph.facebook.com/me/likes
Movies: https://graph.facebook.com/me/movies
Books: https://graph.facebook.com/me/books
Notes: https://graph.facebook.com/me/notes
Photo Tags: https://graph.facebook.com/me/photos
Photo Albums: https://graph.facebook.com/me/albums
Videos: https://graph.facebook.com/me/videos
Events: https://graph.facebook.com/me/events
Groups: https://graph.facebook.com/me/groups
(את זה העתקתי מהדוקומנטציה האומללה של פייסבוק)
שימו לב! אם לא ביקשתם הרשאות מתאימות בתהליך האותנטיקציה, לא תוכלו לקבל גישה לחלק מהמידע. אני ביקשתי אישור ל-events ול-email ב-req_perms. אם אני אנסה לקבל מידע אחר, כמו למשל
$fbme = $facebook->api('/me/events');
אני לא אקבל אותו כיוון שלא ביקשתי אישור בתהליך האותנטיקציה. כל מה שאני אקבל זה מערך ריק.
במאמר הבא נדבר סוף סוף על פרסום בקיר של המשתמש באמצעות אפליקצית פייסבוק.