歡迎轉載(註明出處)或直接轉貼網址也ok,但是請不要直接把內容摳走貼在別的地方~

相關文章更新歷程

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

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  

 

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

 

 

 

創作者介紹

小雕雕的家

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


留言列表 (99)

發表留言
  • jkowaur
  • 你好,我最近也剛好在學習facebook應用程式的開發遇到了一些問題剛好看到了你這篇文章,想問一下。我是用php sdk來寫的,想要存取user的資訊,但是都只能存取預設權限資訊,想多存一些資訊,例如生日之類的,但是都不知道該如何取得權限,這段是我的存取程式碼,
    $user_profile = $facebook->api('/me?fields=name,birthday,location,gender,picture','GET');
    雖然設定存取了birthday這個欄位,但是都沒辦法存到到,希望可以幫忙解答一下,謝謝
  • 我剛剛留言不見了重打 = =
    我看了一下,你寫應該的不是取得授權喔,只是取得欄位的資料而已~
    沒取得授權的話,預設只能抓取基本 or 公開的資料
    要取得授權的話你可以看一下這裡 (php版)
    https://developers.facebook.com/docs/reference/php/facebook-getLoginUrl/

    scope參數值要放的就是要取得user授權的欄位
    可以取得的授權有這些喔
    https://developers.facebook.com/docs/reference/login

    看你要哪種用逗號串起來組成字串給scope參數就可以了

    小雕 於 2014/02/15 22:54 回覆

  • jkowaur
  • 很謝謝你喔!!最近終於又有空可以弄這個,看了你的回覆終於成功的取得了授權,話說英文不好看這些網頁看了好久真想哭><
  • 哈 別客氣,恭喜你成功了喔~^^

    小雕 於 2014/02/24 15:37 回覆

  • Ray
  • 您好,謝謝您分享如此實用的資訊。在試用您懶人包網址的時候,發現一個小問題,似乎按讚名單只能抓出前1000筆?是因為您設定了1000筆資料的上限嗎? 謝謝您
  • 你好喔,我剛剛看了一下我是設定100000筆喔!
    我再看一下有沒辦法調整好了,只怕是facebook本身的最大限制

    剛試了一下的確最大值是1000筆,不過可以用分頁來解決 (一頁1000筆)
    我今天有空再來改一下程式好了,多謝你的提醒喔!
    =======================================================
    hello 抱歉囉!
    facebook 最大提供就是1000就算用分頁方式取回也只是一開始的1000
    找了一下資料也是如此,這部分我要在想辦法研究一下有無其他方法可行!
    =======================================================
    只能1000筆的問題,似乎可以用Graph API解決,明天再來改一下程式
    =======================================================

    已經修改成可以分頁囉,一樣一頁1000筆

    小雕 於 2014/03/13 13:26 回覆

  • Ray
  • 您好,謝謝您的修正,非常感謝 :")
  • Hsu Nall
  • 您好 這篇文章實在是太棒了,剛好公司有相關的需求,省了好多時間,實在太感謝了,請問一下 ,如果是要取得粉絲團裡面某個相簿所有相片的按讚人公開資料要怎麼改呢,感謝
  • hello 你好~~~

    先假設你還不知道你粉絲團相簿的編號好了
    FQL 可以這樣下取得相簿列表,owner可以是me()或粉絲團編號
    這邊是用粉絲團編號
    SELECT object_id FROM album WHERE owner = '382384165146381'
    就會取得你相簿列表的 object_id

    取得你要追蹤的相簿編號後,去找到你要追蹤的相片編號
    FQL 如下
    SELECT object_id,link FROM photo WHERE album_object_id = '382774588440672'
    就可以取得你相片的 object_id

    然後就可以用graph api抓有按讚的名單了喔
    (之所以要用graph api抓不用FQL,是因為你按讚的名單可能會超過1000,FQL有上限1000的限制)

    ex :
    623273904390738/likes?fields=id,name,link,pic_large&limit=1000

    623273904390738 就是粉絲團其中一張照片的 object_id

    graph api 的用法可以參考另一篇喔
    http://sweeteason.pixnet.net/blog/post/40861897

    ps:可以來這邊測試
    https://developers.facebook.com/tools/explorer/

    小雕 於 2014/03/19 16:09 回覆

  • Chyo Pu
  • 大大請問一下~~如果只是要單捉取斐斯團的按讚名單~~是不是可以由懶人包裡修改就可以了呢?
  • Chyo Pu
  • 抱歉..是粉絲團
  • 是可以沒錯,但是還是建議不要~~ @@
    因為那是我隨便寫出來的沒什麼結構可言,日後不好維護喔~~

    小雕 於 2014/03/21 16:19 回覆

  • Chyo Pu
  • 恩~~店裡的活動要用~~一直爬文~~才看到大大這篇~~那我先試做~~不懂的再請教大大可以嗎?^^"
  • ok 好的~~沒問題!
    互相討論啦 XD

    小雕 於 2014/03/21 17:44 回覆

  • Hsu Nall
  • 你好 謝謝你的回覆,因為要取的按讚人數超過1000人,必須要用graph api,又需要取得地區資訊(locate),用FQL在USER資料表裡面找的到 SELECT pic_big,name,id,url FROM profile WHERE id in (
    SELECT user_id FROM like
    WHERE object_id =''),但是graph api卻不知道怎麼下呢?可以請教一下嗎 謝謝
  • Hsu Nall
  • sorry 貼錯FQL 應該是SELECT pic_big,name,uid,profile_url,locale FROM user WHERE uid in (
    SELECT user_id FROM like
    WHERE object_id ='')
  • 欸......這個我有空再幫你研究一下~
    因為graph api 好像很難合併 + 下子查詢
    =======================================
    sorry~ 我還沒有時間試~~
    不過 Graph API likes的文件裡面有說明
    https://developers.facebook.com/docs/graph-api/reference/object/likes/

    An array of User objects representing each of the people who liked the object, in addition to the following field

    他有一個User objects的陣列欄位可以查詢
    https://developers.facebook.com/docs/graph-api/reference/user/
    裡面就有locale跟location欄位了喔
    因此
    '/likes?fields=id,name,link,pic_large&limit=1000';
    欄位自己加上去看看吧~~

    (先說我沒試過喔)

    小雕 於 2014/03/27 10:09 回覆

  • 小鴨
  • 看了你的文章,終於對FQL有了更深一層的認識,謝謝!
    想請教一下,如果想要知道影片中的影片各別的按讚數,有辦法做嗎?又該如何做呢?謝謝!
    有試過用Graph API,但是他的likes沒有計算說讚總數的項目,所以不知如何下.......
  • 你好啊,
    用FQL的話可以先查video的vid,再用vid去likes找user_id
    ex :
    //我的所有影片
    SELECT vid FROM video WHERE owner = me()
    //影片中所有的user_id
    SELECT user_id FROM like WHERE object_id ='10202907416550133'
    不過應該有直接取count數的方式,我來找一下好了
    =============================================================
    我試了一下好像沒辦法直接取得count數,抓到的數字不對
    你可能要去抓名單,程式算節點數了.....

    小雕 於 2014/03/25 16:46 回覆

  • 小鴨
  • 了解!謝謝囉.....看來也只能這樣了,感恩!!
  • 小林
  • 先感謝你的分享,受益良多
    但我一直無法連進你寫好的範例網頁查看,是有需要特別的打開方式嗎??
    感謝
  • 痾....因為我是放在不用錢的免費空間
    他們現在在維修 = =
    你晚一點再試試看好了~~
    http://somee.com/

    We are currently performing maintenance.

    小雕 於 2014/04/01 14:30 回覆

  • 悄悄話
  • 悄悄話
  • 圭翼 柳
  • 請問,可以捉粉絲團所有粉絲的名字和mail嗎?
  • 我回完才發現...你是剛剛在fb問我問題的朋友嗎 @@ (還是我搞錯人了)
    跟你剛剛問的不一樣
    下面是取得文章有留言的使用者喔
    ===========================================
    試了一下是可以的喔~
    你可以來這邊測試 FQL + Graph API
    https://developers.facebook.com/tools/explorer
    首先先查到你要追蹤的文章編號 post_id
    ex :
    select post_id,source_id,attachment,permalink,message,likes,type,created_time from stream where source_id = '輸入你的粉絲團編號'

    可以不用select那麼多欄位,只要找到你要的post_id就好

    然後就查詢出來一堆JSON格式的文章list
    找到你要追蹤的 post_id 然後點一下連結,這工具就會自動幫你用 graph api 查詢了
    上面那串就是 graph api 的語法 (請看附圖)
    https://dl.dropboxusercontent.com/u/28037914/test.jpg

    裡面有 commends 就是留言的內容了
    from id 應該就是 uid

    接下來就照本文的方式程式化吧~
    (上面也有一個連結是講 graph api 的寫法的,可以找一下)

    小雕 於 2014/06/27 23:22 回覆

  • 圭翼 柳
  • 謝謝你的回覆,我的問題題是這樣的
    我們粉絲團有35萬人,想撈這35萬mail 和 名字,不曉的可行嗎?

    如果可用fb和你詢問,再麻煩提供 ^^"
  • sorry 原來我回錯人了~ XD

    目前想要用程式撈粉絲團名單好像是有點困難的
    我之前找了FQL + Graph API也都沒有可以一次取回來的方法 (只能判斷該user是否是粉絲)
    網路上的解答都是因為隱私問題而無法直接抓取
    如果粉絲人數不多是可以直接在facebook 有名單可以看,但是最多好像也只提供500筆
    35萬筆要撈目前感覺有困難喔 (但之前沒改版前似乎曾經可以)

    小雕 於 2014/06/30 15:05 回覆

  • 圭翼 柳
  • 有人和我說可提供 uid 和 mail ,但他只能提供1萬多筆 (活躍名單)
  • 還蠻好奇你說的是怎麼做到的,所以查了一下是否真的可做到,然後看到這個頁面
    http://www.leftmoon.co/

    蒐集粉絲名單UID :
    還在用 FB 內建的興趣分類打廣告?讓我們幫你蒐集粉絲團的粉絲名單吧!蒐集會和粉絲團互動的優質粉絲 (【所有貼文】的按讚粉絲與留言粉絲的 UID ), 讓你直接利用競爭對手的粉絲名單打廣告!FB廣告行銷專家都知道,如果FB廣告受眾精準,就會提高點閱率,提高點閱率,FB廣告點擊成本就會降低,會大大提升廣告競爭力。我們會用程式幫你蒐集1個你指定的粉絲團的粉絲 UID 名單,名單數量不限,如果抓到超過幾十萬筆也還是同樣價格。這是利用 FB 的目前的漏洞,不知道何時FB官方會修改成粉絲團的 UID 名單不能抓取,所以請把握機會喔~
    ====================================================

    他用的是對粉絲團po文按讚跟有留言的粉絲UID,並不是粉絲團全部的list
    如果是這樣的話是可以做的啊,因為本來就可以抓到po文留言的uid 跟按讚的uid
    所以我認為你指的活耀名單應該就是如此.....

    小雕 於 2014/06/30 16:37 回覆

  • Cathy
  • 請問版主
    有辦法可以找到FB粉絲團的所有名單list嗎?
    不是從說讚的名單一直往下使用滾輪顯示更多喔!
    有更快的方法嗎?謝謝
  • hello 你好啊!

    依照目前所找到的解決方式應該是沒辦法的喔,FQL + Graph api都沒有可以一次撈回全部的方式
    據說是因為隱私權的關係而無法直接抓取,但是你可以用上一層樓"圭翼 柳"所說的方式
    但抓到的不會是全部的使用者名單,而是有來你粉絲頁按過讚 + 留過言的"活耀名單"
    這個就只要下FQL就可以抓到了


    小雕 於 2014/07/08 20:03 回覆

  • 縴縴
  • 版主您好,謝謝您寫了這篇文章

    目前遇到其他問題,試過很多方法都取不到資料,所以想說問問版主 ><

    1. 是否可以取得訪客留言?因為MESSAGE好像都是只能拿到該粉絲團的留言,而非訪客留言

    2. 在TABEL中,如PAGE的TABLE,他LOCATION下又有很多東西,像是如果我只要CITY=TAIPEI 不知可不可行
    因為他又說CITY不在TABLE中 ~"~

    謝謝版主 :D
  • hello 你好! 第一個問題測了一下是可以的啊
    但是有一個必要條件是,粉絲團設定中的貼文權限
    "每個人都可以張貼到xxxxxxxx的動態時報" 要啟用才行
    沒開是抓不到的,就算曾經有人留言過也一樣,table一樣是用 stream
    select post_id,source_id,attachment,permalink,message,likes,type,
    created_time from stream where source_id = '382384165146381'

    第二個問題沒試過也
    晚點有空來測測看,先來專心上班一下 = =

    小雕 於 2014/07/14 09:48 回覆

  • 縴縴
  • 不好意思,補充一下上面的問題2

    SELECT page_url, location.city, name FROM page WHERE name = "清心福全"
    以這個語法,可以單獨找出 很多清心的頁面,然後分別知道他的CITY

    但是

    SELECT page_url, location.city, name FROM page WHERE location.city = "Taipei"


    想只找台北的清心,就無法使用 location.city

    不知道是否有辦法解決,謝謝版主 :D
  • 疑~ 我可以啊!
    SELECT page_url, location.city, name FROM page WHERE name = "清心福全" and location.city = 'Taipei'
    你應該是忘了加上要索引的欄位 name

    小雕 於 2014/07/14 09:58 回覆

  • 縴縴
  • 謝謝版主 :D

    不好意思因為剛接觸這個,所以可能有些東西自己沒搞懂,謝謝版主幫忙解惑 !!
  • 別客氣^^

    小雕 於 2014/07/14 21:13 回覆

  • 縴縴
  • 版主好 ~~~

    不好意思又來打擾了 :P

    請問版主有遇過 FQL的模糊搜尋嗎?

    用之前SQL的寫法 % 都沒有用,也沒有辦法用<> 或是 !=之類的,

    不知道版主有沒有相關研究,謝謝您 :D

  • 你好啊,FQL 沒有like '%%'
    但你可以用strpos函數試試看
    用法如下
    http://stackoverflow.com/questions/4996710/facebook-fql-like-operator
    如果是 <> or != 改用 not in 應該也可以啦~

    小雕 於 2014/07/16 09:21 回覆

  • Joe Lai
  • 版主您好:
    很抱歉打擾您,我將您的程式碼完全寫到我的網站,除了改 app_id 以及 channel 等網址之外,其餘都不變,可是我就是撈不出資料,請問是不是我的應用程式設定有問題?另外我需要判斷使用者是否有加入某個粉絲團,但是一直做不出來,用我自己的帳號登入 FB 可以判斷,但是其他人都無法找到資料,不知道版主您能否給點提示,我是一個新手,打擾之處尚請海涵,謝謝您。
  • 請問一下能看一下你的程式碼嗎? 或是你的頁面
    不一定是程式,也有可能是設定的關係
    如果你要讓別人可以使用記得設定中的status and review
    Do you want to make this app and all its live features available to the general public?
    要選擇 Yes
    然後判斷是否加入粉絲團的話看有沒有程式碼可以讓我看一下
    要判斷有幾種方式,不知道你是用哪一種
    code的話可以寄給我喔 cclinyu@gmail.com

    小雕 於 2014/07/25 09:48 回覆

  • Joe Lai
  • 感謝大大您熱心地回覆,我把程式碼整理之後就寄給您,真的很感謝您的幫忙。
  • 好的~
    別客氣,已經回信給你了喔

    小雕 於 2014/07/26 22:11 回覆

  • 縴縴

  • 版主好,

    今天試過幾個PAGES 有些只會收到空字串,可能真的跟設定有關係

    有些可以收到評論,但不完整 (只收到2個 忽略了其他20幾個)

    謝謝您都那麼認真回覆我的問題 :D

  • 早安!
    不客氣,不過我也沒幫到忙 哈
    我有空也來研究一下,如果你有新發現再通知我一下喔~

    小雕 於 2014/07/31 09:03 回覆

  • 訪客
  • 版大~

    我今日透過您提供的這個網頁
    http://socute.somee.com/fblike.aspx

    想來試試看抓不抓的到經營的粉絲團留言
    但發現按下取回後,都沒有資料顯示耶

    是我操作上的問題(但明明就只有一個動作啊....)
  • 痾 我測試是可以的耶
    你換個瀏覽器看看好了,如果還是不行....
    你寄給我你的粉絲團編號好了,我來看看我這邊是不是能抓到
    cclinyu@gmail.com

    小雕 於 2014/08/04 14:05 回覆

  • Maow~
  • 雖然不是很懂程式,不過很感謝版大的文章~
    想請問版大,抓到某篇貼文按讚的人的網址後,
    有些有ID,但有些人已經改成自己的短網址,
    有辦法方便取得那些人的ID嗎?
    謝謝!
  • 不是很懂你的意思耶
    你是說....你想取得對方的UID,而不是個人的網址嗎?
    UID是可以取得的沒有問題,因為那些個人網址也是用UID查出來的
    文章上面的FQL有說明怎麼查出UID
    select user_id from like where post_id = '382384165146381_565322490185880'

    小雕 於 2014/08/04 14:11 回覆

  • Maow~
  • 啊~我剛嘗試了FQL才發現原來可以直接取得~
    我原本是問版大做的這個:http://socute.somee.com/fblike.aspx
    裡面的資訊沒有直接顯示UID,但我比較需要的是顯示出UID,
    請問可以幫忙直接顯示出UID嗎?
    謝謝!
  • 那個....現在想睡覺有點懶 XD
    明天上班有空再來改喔~~~

    小雕 於 2014/08/04 22:59 回覆

  • Maow~
  • 好的,謝謝版大:)))
  • hello 已經改好了喔

    小雕 於 2014/08/05 09:13 回覆

  • Maow~
  • hi!!!UID出現了!!!好開心~謝謝版大~
    啊..請問可以讓UID直接顯示成一整行的純數字嗎?
    顯示在另一格裏面不用出現"UID:"的意思~
    不好意思麻煩版大了@@
    非常謝謝您!!!
  • = = ....明天再改
    其實你可以把它複製到文字檔 or excel
    一次把 "uid :" 取代成空比較快

    小雕 於 2014/08/06 21:26 回覆

  • HAN
  • 哈囉 我想請問一下 瀏覽器有限定嗎?
    我用chrome 並未跑出來耶!
  • 沒有限定耶,我也是用chrome~

    小雕 於 2014/08/06 21:27 回覆

  • Maow~
  • 恩恩我是複製到excel不過因為名字和UID在同一格裏面,用取代之後還是有名字@@,謝謝版大~
  • ok 改好了

    小雕 於 2014/08/07 12:08 回覆

  • Maow~
  • 感恩版大!!!
    :)))))
  • 不客氣~

    小雕 於 2014/08/08 13:16 回覆

  • Peter
  • 謝謝版大用心良苦! (讚
  • 不客氣~
    希望這篇文章有幫到你喔

    小雕 於 2014/08/08 13:17 回覆

  • Candi'S
  • 請問版主...你分享的一個頁面可以讓想查又懶得寫code的人查...
    因為我不是工程師,但是你分享的我剛好有需要(大心),不曉得取得前50則po文可以提高到前200則嗎~~因為那則po文是7/31po的
    50筆我撈不到>< 謝謝版大~
  • ok 改好了喔~

    小雕 於 2014/08/12 16:39 回覆

  • Candi'S
  • 版主您好..........我看到您改成200筆了~~超開心的!!! 但是還是撈不到我要的那一篇(淚)
    請問一下取得PO文篇數有上限嗎?我目前撈到最早的資料竟然是8/8...不曉得能不能把範圍調大(看來我們的粉絲團PO文太多了><) 謝謝您~若有任何問題也可以寄mail跟我說mickey7a@hotmail.com
  • ok 改成500筆了~

    小雕 於 2014/08/12 17:45 回覆

  • Candi'S
  • 版主~~~我又來打擾你了XDD 還是沒撈到我要的那篇 我好想哭>< 真的很不好意思!!!!再三來叨擾你(畫圈) 感覺上是接近了~不曉得是否能幫我調整到1000筆試試看?
    如果能的話我撈完資料再請你把筆數改回來~謝謝歐m(_ _)m
  • 好的,改好了喔 = =

    小雕 於 2014/08/12 23:12 回覆

  • 悄悄話
  • redhorseinman
  • 感謝分享,如果能夠將粉絲團互動的名單直接匯出就更好了!!!
  • 這個....等我有空再來寫吧 哈哈

    小雕 於 2014/08/22 17:19 回覆

  • Elsie Chan
  • hi~版主你好,由於現在 FB 8/8就改版成用圖形API寫, 11/5就會對有些用 FQL 語法寫得功能會壞去,可以麻煩您教學如何用圖形API 撈到 FB 粉絲專業的文章與案在人數留言等等嗎 :)
    有點急 > < 麻煩版主大大!!!無限感恩 :-p
  • 這個嘛...其實我好像已經有一半改成用graph api 了@@
    原因是因為fql有撈取筆數的上限
    教學在此(不過我只有改抓按讚的那部分)
    http://sweeteason.pixnet.net/blog/post/40861897
    抓粉絲團po文的地方還是用fql,抓按讚的已經改成graph api 了
    你只要把那一部分換掉就可以了喔

    抓取粉絲團留言的graph api 語法是這樣的~
    你可以先在Graph API Explorer貼上下面這行就可以看到結果了
    382384165146381/feed
    {粉絲團編號}/feed <---- 就是抓取貼文

    小雕 於 2014/08/24 22:52 回覆

  • Ivy
  • hello 版主大大:D
    公司粉絲團最近要推出按讚留言抽獎的活動,
    抽獎的依據是從有「留言」的粉絲裡面抽~請問有沒有辦法可以抓"單篇貼文"裡面的留言名單呀?(無敵困擾)
    我用Graph API Explorer找到按讚的粉絲資料,可是怎麼翻都找不到留言的名單~_~
  • 可以抓到啊
    但是首先你要先找到你的PO文編號
    可以用我寫的這個工具來找
    http://socute.somee.com/fblike.aspx
    或是自己在 Graph API Explorer 裡面下查詢來找

    然後找這篇po文所有留言的話,graph api 用這個
    https://developers.facebook.com/docs/graph-api/reference/v2.1/object/comments/

    ex:
    205736761592_10152331303541593/comments
    205736761592_10152331303541593 <-- 就是文章編號

    小雕 於 2014/08/26 16:24 回覆

  • Ivy
  • 謝謝~~我找到了!
    我一開始有研究出來要怎麼找文章編號,可是一直都找不到看留言的,
    終於可以了感謝~~
  • 別客氣~^^

    小雕 於 2014/08/26 18:08 回覆

  • 悄悄話
  • 悄悄話
  • an
  • 板大想請問您一下
    假設我要抓粉絲團的人員
    要怎麼抓取呢
    我是用了SELECT uid FROM page_fan WHERE page_id=的語法
    但是他一直出現錯誤 "Your statement is not indexable. The WHERE clause must contain an indexable column"
    麻煩板大給我解答>"<
  • 痾...沒辦法這樣查喔 @@
    文件在這邊
    https://developers.facebook.com/docs/reference/fql/page_fan/
    uid 欄位算是必要條件 (滑鼠移到放大鏡會有說明)

    所以只能這樣下
    SELECT ... FROM page_fan WHERE uid = ...
    SELECT ... FROM page_fan WHERE uid = ... AND page_id = ...
    SELECT ... FROM page_fan WHERE uid = ... AND profile_section = ...
    而且粉絲團的粉絲名單目前沒法一次抓 (FQL、Graph API試過好像都不行)
    所以殘念了

    小雕 於 2014/08/29 17:02 回覆

  • an
  • 謝謝版大的解答>< 我一直以為是自己下錯了...
    因為目前只能捉到分享的文章人員
    所以可能只能藉由這種方法去判斷是否為粉絲團的人了

    但是還是要再一次謝謝版大的解答~
  • 你可以抓po文前100 ~ 500則(有限制則數,但不確定限制多少)有留言 + 有按讚的uid,應該就是你粉絲團的活耀名單了~

    小雕 於 2014/08/29 23:29 回覆

  • 悄悄話
  • 縴縴
  • 對耶,謝謝版主還記得 QAQ

    不好意思被這些東西搞亂了 >"<

    之前想做一些東西,結果因為權限的關係幾乎都抓不到 T_____________T
  • 哈 好像已經事過兩個月了,還沒有解決嗎?
    不過找完資料之後,覺得好像真的有點無解
    如果你有發現解決方案還請不吝跟我說一下啊,我也好想知道~

    小雕 於 2014/09/02 11:00 回覆

  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 柯
  • 你好友PHP版本的嘛!?
  • 痾 沒有耶,但是動作原理都一樣
    等有時間再來寫一篇適用於各平台的好了~

    小雕 於 2014/09/11 12:00 回覆

  • 1K
  • 請問能幫我設計出
    在粉絲團上篩選某貼文「同時按讚跟分享」的名單嗎
  • 按讚跟分享的名單都可以抓到
    要篩選出兩種行為同時都有的話,你可以寫入資料庫後下SQL來比對uid
    或是直接在excel上用人工比對
    如果還有不清楚作法的再來討論吧~

    小雕 於 2014/09/11 15:51 回覆

  • 哲欽 柯
  • 這可以用graph api來抓嗎?
    現在PHP SDK好像沒有facebook.php這個檔案
  • 可以用graph api來抓喔
    但首先你要先取得access_token (首先要先建好app)
    https://developers.facebook.com/docs/facebook-login/access-tokens
    你可以用第二種App Tokens透過oauth的方式取得
    然後取得後就可以直接使用graph api了
    ex: https://graph.facebook.com/po文編號/feed?access_token=你取得的access_token
    就會返回你要的JSON

    以上都是透過server code發送web request去取得api的response

    小雕 於 2014/09/12 09:28 回覆

  • 悄悄話
  • sandy
  • 請問要怎麼取得email格式的 例如:abc.45@facebook.com
  • 目前好像有難度喔
    因為email並不是預設公開的項目
    所以要抓取時會出現錯誤訊息
    The global ID xxxxxxxxxxxxxx is not allowed. Please use the application specific ID instead.

    小雕 於 2014/09/17 22:50 回覆

  • hedy
  • 我剛剛直接進入以下頁面
    http://socute.somee.com/fblike.aspx
    輸入我的粉絲團編號後完全沒有反應耶><
    我想要抓出我的某一篇文章的按讚名單

    嗚嗚麻煩你了 謝謝你~~~~~
  • 痾 應該是不會
    不然你寄給我你的粉絲團編號好了,我看一下是什麼問題
    email:cclinyu@gmail.com

    ps:或是寄給我你們粉絲團的網址也可以

    小雕 於 2014/09/30 16:22 回覆

  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 橘子
  • 板主你好
    我最近在研究FB API
    是想寫出登陸後會出現個人大頭照與基本資料
    但查看官方文件後還是失敗
    我是用Android寫的版主有研究嗎?
    麻煩了
  • 不好意思android版本的SDK就沒寫過了 ^^"
    改天再來研究一下

    小雕 於 2015/01/06 10:48 回覆

  • 柔柔 許心柔
  • 你好,連結點進去好像出現錯誤資訊,前幾天打開還可以~~~
  • 痾 不好意思,我剛去看站台他寫
    The server on which your website is hosted is temporarily down!
    因為是免費空間所以可能過些時候就會自己好了 = =
    不然就是你很急的話,我要想辦法般到其他空間去了

    如果要急著使用可以先到 http://sweeteason-001-site1.myasp.net/fblike.aspx 來用喔
    不過這個網址只剩下兩天就過期....

    小雕 於 2015/02/23 22:12 回覆

  • 悄悄話
  • 悄悄話
  • Summer
  • Hi板主
    你提供的懶人查詢法頁面無法使用。可以有辦法再開啟嗎?
    因為不是學寫code的,真的照你的方法寫不出來。
    http://socute.somee.com/fblike.aspx
  • 這個嘛.....我昨天下午看還是好的 @@
    這個免費空間常常在維修....
    我可能要再找一下有沒有穩定的免費空間搬過去
    在此之前你可以偶爾連連看 sorry

    ==========================
    搬一份到這邊了
    http://socute.gear.host/FBTool/fblike.aspx

    小雕 於 2015/03/05 14:11 回覆

  • Summer
  • 感謝版主。你新搬的地址可以成功抓資料。希望不要再常常維修
    不然三不五時要幫公司抓資料,卡住會想跳樓
  • Ed
  • 有辦法抓到留言的留言嗎 用HTTP的話?
  • ㄟ 抱歉我現在才看到,但我也沒試過
    我等下來試試看喔

    =========================
    hello 先找到該篇留言的 comment ID,然後再用 comment ID去找他底下的留言即可
    ex: 這篇蘋果日報Po文的留言 232633627068_10153210148942069/comments?fields=id
    然後找到底下有 id = 10153210148942069_10153211150267069
    再用 10153210148942069_10153211150267069/comments
    就可以抓到留言底下的留言了

    小雕 於 2015/03/16 09:26 回覆

  • ilww80
  • 請問如果用這個方法去Check 個user 是否已Like, 這需要取得user 的permission嗎?
    如需要的話,是否每個user每次去我個webpage ,都要被問一次嗎?

    FB.api(
    "/{user-id}/likes/{page-id}",
    function (response) {
    if (response && !response.error) {
    /* handle the result */
    }
    }
    );
  • 我記得不需要要求特別的permission (還是新版有改了不確定)
    但是還是會跳起來要user確認一次,跟他說要取得他的公開資料
    下次進來就不會被問了

    小雕 於 2015/03/17 09:06 回覆

  • fun
  • 您好版主,我想請問一下這份code可以抓任意粉絲頁的文章嗎,還是必須要有該粉絲頁的管理員權限才能夠抓取資料呢,最近剛好也需要寫一個取得粉絲專頁貼文的code
  • 可以抓任意粉絲頁的文章不需管理者,但是FQL已經不支援了
    請改用Graph API 2.2版喔
    用法可以參考
    http://sweeteason.pixnet.net/blog/post/40861897

    小雕 於 2015/03/26 10:39 回覆

  • 訪客
  • 你好版主 我想請問如果想針對一篇文章想抓取朋友對這篇文章按取的讚數要怎麼寫
  • hello
    graph api 可以這樣下,可抓到名單與總數

    /該篇文章的post_id/?fields=likes.summary(true)

    要找到該篇文章的post_id可以這樣找
    /me/feed

    可以先在這邊做測試
    https://developers.facebook.com/tools/explorer

    小雕 於 2015/04/07 13:16 回覆

  • 訪客
  • 版主您好,

    看到你設計的程式後,想問一下,
    想要抓取貼文按贊名單的話,
    若不知道其他粉絲專業的編號,該怎麼使用這個程式
  • 你好啊,
    你可以按滑鼠右鍵檢視該粉絲專頁的原始碼
    搜尋 "page_id" 後面跟著的那一串數字就是粉絲團編號了

    小雕 於 2015/06/01 09:09 回覆

  • 訪客
  • 版大您好,

    使用您開發的程式找出的名單ID,為什麼在匯入FB廣告自訂受眾裡面,明明匯入2萬筆卻會在可用性顯示 “無效率偏高”,人數亦跑不出來。
    請問您可否幫幫我解決這個問題呢?
  • 目前因為facebook隱私的關係,所以 uid 都會給另一組,而不是真實的uid,所以這問題可能沒法解決喔,我寫的那程式是比較適合給行銷人員抽獎使用的

    小雕 於 2015/06/03 17:15 回覆

  • 訪客
  • 版主您好,

    請問匯出的資料可以選擇有email的資料項嗎?
  • 新版 graph api要取得email必須要跟facebook 申請權限才行,因為是給真人審核有點麻煩,所以目前暫不提供這功能喔~
    除非有人幫我申請我就會寫 哈

    小雕 於 2015/06/03 17:18 回覆

  • ken
  • 請問一下~~抓到uid後~~如何賺換成fb的email呢?
  • hi 你好,新版本graph api目前就我所知沒辦法喔....會抓到空的

    小雕 於 2015/06/29 17:03 回覆

  • 方沛涵
  • 您好....想請問您一下
    是如何取得粉絲團的所有貼文的?
    因為嘗試了很多次都沒有成功
    所以冒昧問一下><
  • 欸~~抱歉有點晚看到留言

    一樣是用 graph api
    這樣下 : "粉絲團編號"/feed
    可以到 fb explorer 來測試喔
    https://developers.facebook.com/tools/explorer/

    小雕 於 2015/07/06 17:49 回覆

  • 方沛涵
  • 謝謝你:)
  • 方沛涵
  • 對不起再來打擾一下
    請問現在graph api改版以後,取得粉絲團公開貼文是不是就會有權限的問題><
    一直抓不到資料....不太確定是哪裡的問題ˊˋ
    謝謝你QQ
  • 使用的時候可能要先取得access token 喔
    你先試試看在這個網址取得貼文看看
    http://socute.gear.host/FBTool/fblike.aspx
    我有先取得access token,如果不行的話.....再跟我說一下喔

    小雕 於 2015/07/13 09:03 回覆

  • 123
  • 想請問一下,有辦法抓到沒有公開的分享嗎
  • 現在如果要抓取非公開的資料(看哪一種)就必須要跟facebook 申請權限,審核過程是真人審查

    我之前申請的沒有過 XD

    小雕 於 2015/08/07 13:16 回覆

  • 緊迫
  • 你好
    想請問一下有source code嗎QAQ
    本篇的
    因為時間有點緊迫 可以讓我修改嗎?!
    謝謝
  • 痾 請問你是說哪個source code 呢?
    如果是本篇的教學例子已經在文章中了
    如果是抓取資料網站的source code可能不太能給你耶 @@
    抱歉喔~
    如果你在開發的時候有遇到問題,我會盡量協助的

    小雕 於 2015/08/29 14:17 回覆

  • aaaa
  • 不好意思 想請問一下
    您知道如何取得整個粉專的按讚總人數
    以及是那些人嗎?
    可以知道按讚的時間點嗎?
    謝謝
  • hi
    新版graph api無法取得網站的粉絲名單了
    只能取得活躍名單
    活躍名單指的就是:有對po文按過讚、在po文底下留言、分享過文的粉絲

    小雕 於 2015/08/29 14:20 回覆

  • lehanger2015
  • hi 版主您好, 您作的懶人版程式現在只能撈到第一頁list嗎? 我們粉絲團明天有貼文的按讚+分享抽獎, 目前按讚已經2000多了...救急阿..謝謝
  • 其實我應該是全抓才對,但是呢~~graph api取資料有上限
    印象中一次最多只能取回5000筆 (沒記錯的話)
    這是facebook 設定的限制,超過5000就有點難抓了

    小雕 於 2015/09/01 09:30 回覆

  • 訪客
  • 版主大大您好,

    不好意思,有些地方想請教您...

    1. 怎樣可以抓到粉絲團裏所有的粉絲 user_id 呢 (粉絲總數大約5200人)?

    2. 能不能抓到某一篇PO文裏所有「按分享」的 user_id 呢 (分享數目大約300)?
    我在您的頁面 (http://socute.gear.host/FBTool/fblike.aspx) 嘗試過,只能抓到由其他粉絲團的分享,不能抓到個人用戶

    懇請打救! 感謝感謝 >.<!!!

  • hello

    目前沒辦法抓到粉絲團裡的全部 uid 喔,改版之後就沒辦法了~殘念
    你只能抓取常在你網站上活動的uid (ex:按讚 + 留言 + 分享名單)

    抓分享也有權限上的問題,因為有些用戶設定是不公開的所以也抓不到,再來他需要特殊的權限才能使用,必須要去跟facebook 書面申請 (網頁填資料審核) 就算申請到權限也沒法抓到完整資料 (因為使用者不一定每個都設定公開)以上這是之前在facebook 看到的官方討論回應 ,所以.....目前來講技術上是有點難度的

    小雕 於 2015/09/23 22:27 回覆

  • 網海小迷童
  • 請問有辦法將社團中某篇文章的按讚人數統計出來嗎?!
  • hi 你好啊

    是可以的喔,不過我沒實做過,但抓法應該類似

    Group 開頭的都是抓社團資料
    https://developers.facebook.com/docs/graph-api/reference/v2.1/group/

    /group
    /group-id/admins
    /group-id/docs
    /group-id/events
    /group-id/feed
    /group-id/files
    /group-id/members
    /group-doc

    應該是使用 /group-id/feed 去抓
    但你必須先取得 user_managed_groups 的 permission

    小雕 於 2015/10/18 17:08 回覆

  • 網海小迷童
  • 感謝版主的解答
    不過我非本科系的學生
    我想請問先取得 user_managed_groups 的 permission這段話的意思是
    我需要有管理員的權限嗎?
    還是我需要有那個社團的ID?
  • 你可能需要跟 facebook 申請權限,但它們會問你這權限會應用在哪邊,審核其實還蠻嚴的

    社團的 id 也需要喔
    ==============================
    ps: 要申請可以到你 app 那邊的review,勾選你要的權限就可以進入申請流程,但必須要用英文仔細說明你取得權限的用途,還要附上截圖給 fb
    https://dl.dropboxusercontent.com/u/28037914/fbreview.PNG

    小雕 於 2015/10/22 09:18 回覆

  • 訪客
  • 版主大大

    想請問如果已經有現有的UID名單,要如何轉成真正的email呢?
    因為試過@facebook.com的email名單,發現無法新增自訂廣告受眾,配對數都是零,求版主解答,或者有什麼方法是可以直接用UID新增自訂廣告受眾嗎?
    無敵感激 謝謝 :)
  • 這個在新版graph api 發布之後已經無法不申請權限直接辦到了,意思就是你必須要申請讀取email的權限才能抓取,不然都會抓到空的喔

    小雕 於 2015/11/04 23:54 回覆

  • 悄悄話
  • Jing
  • 版主您好,

    我想請問若想抓粉絲頁貼文數,v2.5新版的貼文數分頁好像沒辦法直接用FQL抓取
    請問是否只能夠判斷是否有下一頁,再將下一頁的網址讀取後再抓取下一頁的資訊呢
  • hi 你好,

    FQL已經不再支援了,要改用Graph API,可以參考一下這邊
    http://sweeteason.pixnet.net/blog/post/40861897

    然後抓回來的JSON裡面會有next 這個參數,有的話代表有下一頁喔!
    抓取那個next參數的值就是下一頁的內容了

    小雕 於 2016/03/29 09:18 回覆

  • Onni
  • 版主您好
    請問如果想統計每周前10名按讚(留言)次數最多的粉絲名單~您有方法可以分享嗎?我們公司要辦第1名贈獎活動,以前都用top fans~現在都不能用了!您分享的文章看起來很專業~所以來求救><"
  • hi 你好啊!

    可以去撈當週po文按讚跟留言的名單,然後將名單寫到資料庫去下 group by 就可以獲得你要的名單囉! 但程式要自己寫就是了,我沒有現成的~ = =

    小雕 於 2016/04/18 17:19 回覆

  • Joel
  • Hi 可以跟我聯繫嗎? breakin39@hotmail.com
  • 悄悄話