當用戶想在其他應用中訪問Facebook的相關數據時,面臨着數據的隱私與安全性、對Facebook本身性能的影響、數據同步等問題。
其解決方案如下:
1. 將數據功能從facebook內部移到對外開放的web service上,授權訪問這個web service,保持數據的安全性與隱私性。
在Facebook API中,用戶通過一個已知的api_key重定向到Facebook登錄界面,用戶在Facebook上輸入九零,對這個應用授權。然后,用戶帶着會話鍵和用戶ID重定向到已知的應用。此時,應用便獲得了授權,可以代表用戶調用API方法。
2. 創建一種新的數據查詢語言(Facebook FQL),減輕因為引入新的web服務客戶端對Facebook本身帶來的額外負擔。
FQL類似於SQL,它將Facebook的內部數據轉換為table和fields,而不是傳統WS返回的XML schema,從而,外部應用開發者可以像使用SQL一樣查詢Facebook內部數據。
3. 創建一種新的數據驅動的標記語言(Facebook FBML),將外部應用對數據的變更集成回Facebook。
當遇到不僅僅需要數據層面的交互,還要集成UI層面等需要更深層次的集成的情況時,Facebook應用開發者通過一種數據驅動的標記語言FBML(Facebook Markup Language),在應用中創建應用執行和顯示的內容,並與Facebook交互。在這種方案下,外部應用發給Facebook的不是html代碼,而是一種特定的標記語言,其中定義了足夠的標記來表現其邏輯和顯示,也包含了對Facebook受保護數據的請求,完全讓Facebook在受信任的服務環境中處理並顯示它。
這樣的新型數據服務不一定局限於社會關系信息。隨着用戶貢獻和使用的信息越來越多,這些信息在許多容器站點上都很有用(如內容收集、評論、位置信息、個人計划、協作等數據),各式各樣的平台提供者可以應用Facebook平台持有的數據和Web架構背后的這些思想,並從中獲益。
參考資料:《架構之美》第6章