E N D
Facebook資料備份與應用 組員:趙家均、熊恩妤指導教授:吳昇教授 • 簡介 Facebook近年來已成為眾多使用者記錄生活、與人互動、宣布事情的平台,因此動態塗鴉牆上含有大量資訊。Facebook本身有提供備份功能,但使用者需經過繁複的步驟才能取得資料。在開發者網頁裡,Facebook提供了完整的API給使用者使用,只要成功申請並擁有權限,開發者就能使用API向Facebook抓取使用者資料。這個專案先使用Facebook Query Language(FQL)取得塗鴉牆資料,再將資料分析處理,讓使用者能將資料存進個人電腦作備份,並在網頁上提供搜尋、排序等主要功能。 • 程式架構 • 困難 • Facebook使用OAuth 2.0的標準,讓第三方應用程式可以在使用者的同意之下(不需要使用者帳號、密碼)存取個人私密資料。為避免給予第三方太多權限,Facebook將不同類型的資料分配到不同table中,並給予它們不同的權限設定。所以當我們向Facebook要求存取資料時,會因為向使用者要求的權限不足,而無法取得完整所需的資料。 • 使用API抓取動態時,會限制最多能抓取的數量,或能抓到的最早時間。因此當使用者動態總數量太多,我們就無法抓取較早的動態,必須經常開啟抓取資料的程式將資料存進資料庫。 • 因為使用PHP結合FQL抓取資料,平均需經過十幾分鐘才能抓取到最大限制數量,實作上並不適合將抓取資料和處理資料結合放上顯示頁面,因此我們必須將取得資料與處理資料分開執行。 • 取得資料 end login.php login to Facebook 回報已完成 否 透過Facebook的API,要求取得使用者read_stream, user_about_me, read_requests, read_friendlists的權限 判斷是否有取得資料 是 Weight =like_count*2 +comment_count +share_count 使用FQL向facebook要求30筆feed • 未來展望 新增或更新至sqlite資料庫 目前我們備份的範圍以個人塗鴉牆上的動態為主,備份的內容以文字資料保存。未來我們希望能備份到更完整資料,例如社團訊息、相簿、影片等多媒體的資料,並將資料做更詳細的劃分、歸類保存,也希望能達到即時備份或是定時備份的功能,讓使用者更有效率的管理自己的資料。 • 處理資料 首頁連結至classify.php 自動連結至allStream.php頁面 • 網頁呈現 登入Facebook取得user id 在資料庫裡的feedtable選擇attachment_type為影片的動態,存入video table 在資料庫創建my_feed table 在資料庫創建video table 在資料庫裡的feedtable選擇發佈者id為使用者id的動態,存入my_feed table 在資料庫裡的feedtable選擇一週內weight較高的熱門動態,存入popular table • 參考網站 PHP:http://www.php.net/manual/en/langref.php w3schools:http://www.w3schools.com/ FQL:https://developers.facebook.com/docs/reference/fql/ SQLite:http://www.sqlite.org/ PDO:http://php.net/manual/en/book.pdo.php stackoverflow:http://stackoverflow.com/ 在資料庫創建popular table