TOP

2014年10月20日 星期一

[教學]取得FB貼文中按讚/留言人數

想要取得所有按讚人數/留言人數,沒聽過[FB API]的人,應該會用傳統方式展開一筆一筆複製下來,以下教學提供大家使用API快速取得所有清單。

舉例取得以下貼文(本教學僅提供貼文使用,其他分享、圖片、連結的取得方式不同)

步驟一:貼文右上角按下「嵌入貼文」




步驟二:複製嵌入語法


步驟三:取得貼文編號






步驟四:

說明:  https://graph.facebook.com/貼文編號/comments?
取得以下資料(內容會以 JSON格式呈現)。

步驟五:使用程式解析JSON格式資料(以VB.NET舉例)
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Newtonsoft.Json 的使用方式請自行參考網路說明
    Public Function Get_FB_Likes(ByVal Post_ID As String) As String()

        Dim returnAry As String() = Nothing
        Try

            Dim objWebClient As New System.Net.WebClient
            Dim url As String = String.Format("https://graph.facebook.com/{0}/likes?limit=1000", Post_ID) '注意:回傳結果每次最多1000筆,設定再多都無效

            Dim list As New List(Of String)

            Do Until String.IsNullOrWhiteSpace(url) = True
                Dim JsonResult As String = Encoding.UTF8.GetString(objWebClient.DownloadData(New Uri(url.Trim))) '以UTF-8取得結果
                Dim JObj As JObject = JsonConvert.DeserializeObject(JsonResult)

                Dim Data As String = JObj.item("data").ToString
                Dim JAerry As JArray = JsonConvert.DeserializeObject(Data) '取得陣列型態資料

                Dim TmpAry = (From p In JAerry Select p.Item("name")).ToArray

                For Each s In TmpAry
                    list.Add(s.ToString)
                Next

                If JObj.Item("paging").Item("next") IsNot Nothing Then '檢查是否有分頁
                    url = JObj.Item("paging").Item("next").ToString
                Else
                    url = ""
                End If

            Loop
            returnAry = list.ToArray '完成後轉換成陣列
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

        Return returnAry
    End Function

以上產生出來的資料就是所有按讚的人數