相關文章更新歷程

=======================================

update : 2014/9/23

使用Graph API 取得留言分享的名單 (sharedposts) 請看這篇 :

使用Facebook Graph API 取得分享Po文的使用者名單 (sharedposts)

update : 2014/9/11

此篇是使用FQL,如要改成使用 Graph API 請看下面這篇 :

使用Graph API 解決FQL 最多上限1000筆的問題

=======================================

前言廢文:

之所以會寫這東西......是因為有某人說他們公司的工程師兩光

只是想要叫他抓出粉絲團某篇文章按讚的人,然後把他們的照片配對但寫不出來

然後我們公司行銷好像也有拿FB按讚的名單當抽獎的例子

而且我也沒有做過這種東西,所以就來嘗試研究一下

看了一下發現利用FQL的話就非常簡單~

>>懶得了解想要直接試試看請到這裡來<<

下面還是先使用 javascript 來寫

=======================================

事前功課

第一步:

首先先看一下 FQL 可查詢的 Table 列表,Table 點進去有欄位名稱

https://developers.facebook.com/docs/reference/fql/

FQL 語法就像下SQL一樣,只是沒那麼強大

就算不會下SQL,你點進頁面裡面都會有範例

Clipboard02  

 

第二步:

到 https://developers.facebook.com/tools/explorer 這邊

來測試一下你的FQL是否正確,要記得切換到 FQL (如下圖)

Clipboard02

 再來按下上面的"取得存取代碼" (AccessToken),勾選你想要取得的權限

以我要做的例子而言,我要抓取的是 user_likes (其他是我亂勾的)

要注意FQL裡面有些資料是需要正確的Permissions才能抓取

Clipboard02   

再來就可以直接在輸入框測試 FQL

以我要做的例子而言,我要抓取某粉絲團內某篇文章按讚的使用者資訊

所以我要查的資料表有

1. stream (查詢粉絲團內的Po文編號,還有各文章按讚的總人數)

https://developers.facebook.com/docs/reference/fql/stream/

2. like (取得針對某篇Po文 ID按讚的 user_id)

https://developers.facebook.com/docs/reference/fql/like/

3. profile (用user_id 去抓使用者個人資料)

https://developers.facebook.com/docs/reference/fql/profile/

 

首先找 stream 看看我要追蹤的文章 post_id 到底是什麼

FQL:

select post_id,source_id,attachment,permalink,message,likes,type,

created_time from stream where source_id = '382384165146381'

 

source_id 是粉絲團編號,可以到你的粉絲團 / 編輯專頁 / 更新專頁資訊,裡面有寫

Clipboard02

然後就會取得如下的 JSON 字串

Clipboard02   

裡面的 post_id 還有 likes/count 就是我要的了

找到 post_id 之後,再來是找這篇文章裡面到按讚的是誰

FQL:

select user_id from like where post_id = '382384165146381_565322490185880'

 

就會回傳有按讚的 user_id 

 Clipboard02

再用 user_id 去 profile 找個人資料就搞定了

 

上面是查詢步驟,但是真的要下的時候一個一個查也太累

於是改成這樣一次查比較快

SELECT pic_big,name,id,url FROM profile

WHERE id in (

    SELECT user_id FROM like

    WHERE post_id = '382384165146381_565322490185880'

)

 

查出來就會是這篇文章按讚的大頭照、名字、編號、個人檔案連結了

(不太好意思列出別人的資料)

再來只要解析 JSON 就搞定了

 

第三步:

現在就來程式化一下,還是使用 javascript 來寫

首先你要先建立一個應用程式,這些前置步驟就不寫了,請看這邊

http://sweeteason.pixnet.net/blog/post/37284400

雖然他又改版了,但輸入的資料還是大同小異

 

首先引用一下 .js 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<script type="text/javascript" src="http://connect.facebook.net/zh_TW/all.js"></script>

還有標籤

<div id="fb-root"></div>

再來就開始程式,首先初始化 FB.init

$(document).ready(function () {

        //網頁位置,要跟應用程式裡面設定的一致

var url = "http://localhost:50175/Default.aspx";

//我的應用程式編號

var appid = "693808703975156";

//我要追蹤的文章編號

var post_id = "382384165146381_565322490185880";

FB.init({

appId: appid,

status: true,

cookie: true,

xfbml: true,

channelURL: 'http://www.test.com.tw/channel.html',

oauth: true

});

//再來檢查登入狀態與授權

FB.getLoginStatus(function (response) {

if (response.authResponse) {

//var accessToken = response.authResponse.accessToken;

FB.api({

method: 'fql.query',

//取得po文按讚的使用者資料

query: "SELECT pic_big,name,id,url FROM profile WHERE id in (SELECT user_id FROM like WHERE post_id = '" + postid + "')"

}, function (res) {

for (var key in res) {

var pic_big = res[key].pic_big;

var name = res[key].name;

var id = res[key].id; 

//跑迴圈一個一個就抓到啦,下面視個人情況運用

//............................

//............................

}

});

} else {

       //取得授權,這個例子是抓使用者 email + likes 

window.top.location.href = "http://www.facebook.com/connect/uiserver.php?app_id=" + encodeURIComponent(appid) + "&next=" + encodeURIComponent(url) +"&display=popup&perms=email,user_likes&fbconnect=1&method=permissions.request";

}

});

});

 

PS:FQL 查回來預設是有限制筆數的,你可以自己加  LIMIT 來看你要幾筆

SELECT pic_big,name,id,url FROM profile

WHERE id in (

SELECT user_id FROM like WHERE post_id = '" + postid + "'

) LIMIT 100

(可以自己去找 Oracle 的SQL來看,MSSQL沒有LIMIT)

然後FQL 有個最大限制筆數,目前是1000筆

如果你想抓的資料超過一千筆而且想要做分頁的話

建議使用 Graph API 去做喔!

請看一下這篇

使用Graph API 解決FQL 最多上限1000筆的問題 (就是改用Graph API的意思)

 

然後我有寫了一個頁面可以讓想查又懶得寫code的人查

網址 : http://socute.somee.com/fblike.aspx (這個常在維修)

備用網址 : http://socute.gear.host/FBTool/fblike.aspx (這個比較穩定)

 

只要輸入你的粉絲團 id 即可 (粉絲團id 怎查上面有提到)

 

查詢結果

Clipboard02

 

按下去文章編號,就會顯示針對該篇文章按讚的使用者,如下

Clipboard02  

 

然後我就發現用這個頁面來找妹其實蠻快的

 

 

 

創作者介紹
創作者 小雕 的頭像
小雕

小雕雕的家

小雕 發表在 痞客邦 留言(99) 人氣()