Thursday, December 23, 2010

[Facebook] 以FQL查詢使用者是否為特定應用程式的Fans

PS: 這項功能似乎需要使用Facebook帳號登入此網站才能使用,如果下面的功能無法使用,請按下面的按鈕登入,然後refresh頁面再試試。

Facebook Query Language,簡稱為FQL,為Facebook提供的SQL形式查詢介面,使用上只要將Query String像下面這樣丟出去

https://api.facebook.com/method/fql.query?query=QUERY

然後取得回應即可,回應來的格式可以是xml或是json,看你怎麼指定。 為方便示範結果,所以我使用Facebook的JavaScript SDK去呼叫,先來一個取得名字的簡單範例,語法為

SELECT name FROM user WHERE uid=me()

實際出來的結果可以按看。

然後就來實際運用了,現在很多facebook遊戲都會有個進度條,裡面通常會有個條件是對這個遊戲按讚(Like),雖然說用Graph API可以拉出來使用者有Like過的所有應用程式/頁面,但是還得自己做篩選,才能知道有沒有對指定的頁面按過Like,有點麻煩,所以這時候可以使用FQL來解決問題。 先從拉出使用者Like的資料開始。

SELECT page_id FROM page_fan WHERE uid=me()

可以看到結果呈現在下面。

能拉出結果後,就要來做篩選的動作了,篩選出結果的同時,我順便把拉出來的page_id轉成好懂的名字,語法如下

SELECT page_id,name FROM page WHERE page_id IN 
(SELECT page_id FROM page_fan WHERE uid=me() AND page_id='158779757474862')

可以檢視所得的結果。如果有Like我的部落格,就會有訊息視窗跳出來囉,會跳兩次分別寫name與page_id。

如果你想測試的話,也可以現在按 XDDD

JavaScript使用FQL語法很簡單,只要這個頁面能跑FBML,然後就可以參照下面的範例去呼叫。

function query(str){
FB.api(
    {
    method: 'fql.query' ,
    query: str
    },
    function(response){
    for (var i in response[0])
        {alert(i+'='+response[0][i]);}
    }
);
}

No comments:

Post a Comment