#

現在很多網站都會內嵌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

Theme Design by devolux.org. Converted by Wordpress To Blogger for WP Blogger Themes. Sponsored by iBlogtoBlog
This template is brought to you by : allblogtools.com | Blogger Templates