2009年10月27日 星期二

Facebook新的Share Button

眼看10月又快過了,我的Blog裡面一篇新文章也沒有!這也太淒涼了~(最近幾篇似乎都是這麼無奈的開場),好吧,正好Facebook昨天發表了新的Share Button,那就來測試一下,介紹一下它吧!



新的Share Button,基本功能跟之前使用呼叫"http://www.facebook.com/sharer.php?u=[url]&t=[title]"一樣,就是連到這一頁,告訴它你要分享的URL,然後那個URL的頁面上設定好description跟media給Facebook去抓。不同的是,現在透過語法加上Share Button後,Button的上面或右邊會跟一個對話框,告訴你這個連結被分享的次數。新的語法可以看這裡,它會長這樣:分享
這個分享的次數,是跟著你分享的URL,而不是這個Button。也就是說,如果有10個Button分享同一個URL,那他們統計的數字是加在一起的。這個數字跳的方式有點微妙。首先,一點下去他就在頁面上直接+1了,不過,這是假的。因為點了不代表真的分享出去了,如果點了又按取消的話,你可以reload頁面看看,數字會再減回去。即使你真的分享完,立刻reload頁面,你還是會發現數字又減回去。這是因為Facebook只讓你兩分鐘更新一次這個數字,這個限制是指你用這個語法去分享。下面當然要再介紹其他方法。

到此為止,在html頁面上加個Share Button應該是再簡單不過了。但是如果放到Flash裡面呢?首先測試了一下,使用Flash(透過Javascript)去呼叫"http://www.facebook.com/sharer.php?u=[url]&t=[title]"產生的分享,一樣會被加到share count裡面。再來的問題是:如何抓到這個share count?其實,Facebook提供的可不只一個share count喔!看看這個,台灣Yahoo被FB分享的統計。方法是呼叫:"http://api.facebook.com/restserver.php?method=links.getStats&urls=[url]",後面就是帶你要查的URL,它就會吐那一堆XML給你。它提供的數字內容我們等等再討論。我們要先讓Flash去把它讀出來。

既然它吐的是一堆XML,我們就用URLLoader將它讀進來,然後將node裡面的值拆解出來就好啦。不過這裡是跨網域去讀取,試了一下,不必特別去設定crossdomain的部分,顯然Facebook已經幫大家考慮好啦!就大方的去把它讀進來吧!但是讀完之後要拆解出來,我發現它的root node裡面帶的東西似乎會讓Flash判讀有點問題。沒關係,轉個彎,把它轉成字串,把中間的link_stat抓來用就好。寫了一個簡單的Flash測試。程式碼沒啥大不了的,請直接下載參考吧。

這裡有個棘手的問題,就是如果想要即時顯示share count或其他資訊的話,會有點問題。如果我們確實分享成功之後,再重新去讀取這個XML,share count其實是會立即更新的,沒有前面那個使用Facebook元件去顯示的兩分鐘限制。可是難就難在分享完並沒有事件會通知你。而user點了Button之後,到底多久才分享出去,或是又按了取消,似乎也沒辦法知道。所以這問題...就先擱置吧!如果有人想到好方法,也請通知我一聲~~

再來看一下這個XML裡面的幾個數字。url跟normalized_url就是你分享的URL,就不管了
Share count:這個URL被分享的次數。分享成功後重新讀取就會抓到最新的數字。
Like count:分享完後被說"讚"的次數。隔一段時間才會被更新喔,這段時間可能是幾個小時。
Comment count:分享完後留言的回覆次數。也是隔幾個小時才會更新一次。
Total count:上面三個數字加起來。代表的意義?就看個人解讀囉。
Click count:理論上是分享完後被點擊回到分享URL的次數。之所以稱它為"理論上",是因為我從早上測到晚上,這數字還沒被更新,所以要再觀察一下。

最後來兩個結論。第一,Share button的概念是"分享連結",分享的內容如前面提到,是寫在被分享的頁面上,包含文字跟圖檔,甚至是其他媒體。每個人分享都是一樣的內容。如果專案的目的是要在塗鴉牆上散布一些帶有個人資訊的消息,例如暱稱、遊戲分數等,就要用Connect連結後再去發布這些東西。第二,前面也提到,所有分享同一個URL的統計都會被累加在一起,如果想要統計某一個Share button被點擊的次數,就要自己想辦法分開來記囉,而Like count,Comment count,這些應該是沒辦法被單獨記錄的,至於Click count,或許可以在URL上帶參數回來記錄。

以上。

沒有留言:

張貼留言