註冊App
Application裡有個應用叫Developer,加入後可以註冊新應用。點擊“set up new application”輸入應用的資訊提交即可。開發人員首頁好像沒有相關的連結入口,這點不方便。
許可權驗證
現在的社交、微博網站大多都採用標準的OAuth驗證,Facebook也不例外,這點必須滴。使用者登入是在Facebook的網站頁面輸入帳號密碼,登入成功後會重新導向到你的頁面從而擷取Token,之後訪問API使用Token來驗證。你的應用只需要拿到使用者的Token即可,整個過程你是接觸不到使用者的帳號和密碼的。即使你拿到帳號也沒用,API只認Token。相比HTTP Basic Authentication(HTTP Header中增加Bae64過的帳號和密碼),整個做法複雜化了,但是安全了。Basic Authentication時代開發人員可以隨心所欲,做各種各樣的應用。OAuth之後最麻煩的就是驗證,特別是對案頭或行動裝置 App,一般都在表單中嵌入一個瀏覽器控制項來完成。
擷取Token
1) 訪問https://graph.facebook.com/oauth/authorize?client_id={app_id}&redirect_uri={app_url},如果使用者沒有登入,則登入,提示使用者是否允許應用訪問自己的資料,既是否授權允許。Facebook返回到你的應用,帶一個code參數: {app_url}?code={code}
2)訪問https://graph.facebook.com/oauth/access_token?client_id={app_id}&redirect_uri={url}&client_secret={app_secret}&code={code}
Facebook返回到你的應用,body中有access_token,你可以在你的應用裡儲存使用者token,預設60分鐘到期,你可以增加offline_access許可權讓它不到期。
整個過程是比較簡單的,不用作簽名之類的。麻煩的是必須跳到facebook網站驗證,如果是做用戶端應用會影響體驗。
訪問API
訪問需驗證的Function加上access_token參數即可,GET或POST看具體函數而定,API統一返回JSON格式的資料,沒有別的選擇,不像Twitter的選擇很多。請求中也不用做簽名。
許可權
Facebook的許可權分得異常的細,預設你只能訪問使用者最基本的資訊,比如你想擷取一個設定了隱私(只對朋友開放)的使用者的statu,需要read_stream許可權,你想post statu需要publish_stream許可權,你想擷取使用者的email帳號需要email許可權等等。所以最好根據你的應用確定需要那些許可權,在使用者首次使用做許可權驗證時開通相應的許可權,否則後面使用中會達不到你期望的結果。
提升許可權
訪問:https://graph.facebook.com/oauth/authorize?client_id={app_id}&redirect_uri={app_url}&scope=publish_stream,offline_access,user_status,read_stream
scope後面跟的就是許可權,每個用逗號分開,可以有多個。
更新通知
Real-time Updates,當你的使用者有更新時,Facebook可以通知你,這是一個很有用的功能,可以即時接受使用者的更新。
1) 建立一個訂閱,預設你的應用是沒有更新通知的,你需要先建立一個訂閱,告訴Facebook我需要更新通知。
POST資料到https://graph.facebook.com/{app_id}/subscriptions?access_token={token},這個token是應用的token不是使用者的token,注意url是https,不是http(文檔是錯的),參數:object,fields(你需要監視使用者的那些更新),callback_url,verify_token(你自己指定一個驗證用),提交這個請求後就建立了一個訂閱。提交POST時候你的callback_url必須存在且可以訪問,Facebook會Get此url驗證是否存在。
2) 接受更新,建立好訂閱後當使用者有更新時,Facebook會通知此url告訴你有更新(POST),你將收到的更新內容為JSON格式,如:“{"object":"user","entry":[{"uid":"100001548188940","id":"100001548188940","time":1301731097,"changed_fields":["feed"]}]}”,表示該使用者更新了狀態,不包括更新的內容。當然,返回可能是個集合。
你收到資料後可以做相應的更新處理,根據你的應用這個post頻率可能會高(監視的是使用你應用的所有使用者),得考慮的你的程式效能。
小結
Facebook是一個很全面的社交網站,其API也很豐富,有Friends,Feed,Like,Music,Photo,Events,Checkin...等等,文檔也比較多。但具體使用上就簡單了,至少每次請求API不用簽名,相比Twitter,Douban等省事多了。關鍵得花時間研究透他的文檔,文檔裡有詳細的說明,問題都可以通過文檔解決。
關鍵字:Facebook,API,社交網站,微博,應用
http://chy710.cnblogs.com/