現在很多網站都會內嵌Facebook 的 social plugin,像「讚」或是「Comments」。在這樣的情況下,如果你想要用程式去取得某個URL之下有多少的結連總數、意見總數或分享總數,該怎麼處理? 方法很多,其中最簡單的一種是用Facebook提供的REST API,雖然它不是最好的方法,但依然是可用的方法。
E07.1 關於REST API
使用REST API的方法很簡單,其實就是使用HTTP GET某個URL再加上一些特定的參數,這樣Facebook就會回傳你要的資訊,例如,下方是一個取得網站分享資訊的方法,你可以打開瀏覽器然後輸入下方的網址,這樣Facebook就會回傳本站關於Facebook分享的資訊。http://api.facebook.com/restserver.php?method=links.getStats&urls=http://www.itpt.com.tw
輸入上面的網址後,你會看到Facebook以XML的格式回傳了我們要的資訊:
<links_getStats_response xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
<link_stat>
<url>http://www.itpt.com.tw</url>
<normalized_url>http://www.itpt.com.tw/</normalized_url>
<share_count>5</share_count>
<like_count>0</like_count>
<comment_count>0</comment_count>
<total_count>5</total_count>
<click_count>0</click_count>
<comments_fbid>10150171304989663</comments_fbid>
<commentsbox_count>0</commentsbox_count>
</link_stat></links_getStats_response>
當然的,你可以把上面網址最後面的http://www.itpt.com.tw換成其它的URL,這樣就可以取得對應URL的分享資訊。另外這個XML文件的欄位可以參考Facebook的說明。
E07.2 程式範例
下方的程式使用Tcl內建的http套件來執行GET URL的功能:程式 E07-1 Tcl執行Facebook REST API
package require http
set urls [::http::formatQuery urls "http://www.itpt.com.tw"]
set tok [::http::geturl "http://api.facebook.com/restserver.php?method=links.getStats&$urls"]
set data [::http::data $tok]
set ncode [::http::ncode $tok]
::http::cleanup $tok
if {$ncode != 200} {
puts "執行失敗"
} else {
puts $data
}
這個程式值得注意的地方在第3行,記得使用HTTP的GET需要把URL做編碼的動作,在Tcl裡可以使用::http::formatQuery命令做URL編碼的動作, 執行完第3行urls會變成這樣:
urls=http%3a%2f%2fwww.itpt.com.tw
參考資訊:
Facebook : FQL
Facebook : Social Plugins
Facebook : REST API
按右上方的「#」號切換側邊欄
7 個意見
米粒 | 2011年8月19日 下午2:04
頭香我拿走啦
簡單易懂又實用!!!
我比較想知道這些功能可應用在哪邊?統計嗎?
dai | 2011年8月21日 晚上10:53
我拿來計算某個網站裡每篇文章的「熱門程度」,當個參考值,嗯~~就這樣 哈
米粒 | 2011年8月22日 下午4:58
喔~的確~~
不過我覺得應該是"認同"程度,不是"熱門"程度
因為可能一篇文章觀看次數不多,但讚的次數比別篇觀看次數多的還多。
dai | 2011年8月22日 下午5:10
哈 ~ 有道理,這樣解釋也不錯!!
匿名 | 2011年11月23日 晚上7:38
為何我只能抓下有密碼的相本 沒有密碼的都抓不道??
WU | 2014年6月28日 下午5:13
nice..
thx and god bless you and the world...
^___^
無名套裝 | 2015年7月1日 下午5:36
喜歡你,沒道理,哈哈
留下您的意見