[Python教學] Facebook圖形API測試工具,取得粉絲頁按讚數

作者/攝影  曾吉弘
時間   2小時
成本
難度  * * * *
材料表
  • 個人電腦
  • Facebook帳號

本文要介紹如何使用Facebook的圖形API測試工具(Graph API explorer) 取得粉絲頁的相關資料,最常見的應用就是讚數。如果喜歡的話,還可以結合Arduino作出有趣的互動裝置,例如以下:

(註:本影片僅為示意,並非使用Python來取得資料)

 

Facebook開發者平台與圖形API測試工具頁面

請到Facebook開發者網站(請用您原本的Facebook帳號登入即可),在網頁最下面找到 圖形API測試工具(Graph API explorer)。您可以在此查詢您個人的所有資料,查詢結果會以 json 格式回傳,下圖是阿吉老師的Facebook Id 與使用者姓名的查詢結果:

(圖形API語法詳細文件請點我)

請點選畫面右上角的下拉式選單,找到您所要查找的粉絲專頁(您得是該專頁的管理員才行),例如本範例的CAVE教育團隊。下圖查詢了四個項目:id、name、fan_count(讚數)與link。您當然可以查詢其他欄位,只要有輸入資料都可以查得到。

以往的做法是比較寬鬆的,不需要AccessToken,且只需要把粉絲頁超連結www改為graph即可,但現在已經都需要從圖形API測試工具取得才行,這也暗示了您需得是該粉絲頁的管理員才可查找。並且AccessToken會在兩小時之內過期。網路上介紹如何取得永久有效的AccessToken,但不在本篇討論範圍之內。

Python程式碼

 

最後請看一下本範例的Python程式碼,

阿吉碎碎念:Facebook相關的API改動非常快,例如2.6之前,fan_count 原本是叫做 likes。其他雲服務也會常常改,但真的Facebook最愛改就是了,可能和創辦人個性有關吧~

 

本範例的關鍵URL由以下四個項目組成:

  1. facebook api 網址:https://graph.facebook.com/v2.10/
  2. 粉絲頁id:148248725246010 (CAVEr教育團隊)
  3. 要查找的欄位:?fields=id,name,fan_count,link&access_token=
  4. Access token:請由Facebook API圖形API測試工具

 

當然,其他程式語言如C#、Node.js 甚至App Inventor等都可以做到本範例的效果,您可以在取得資料之後直接使用瀏覽器來測試,只要看到以下畫面就是ok的:

 

https://graph.facebook.com/v2.10/148248725246010?fields=id,name,fan_count,link&access_token=XXX

 

FB API 2.10

 

#22是您要查詢的Facebook帳號或粉絲專頁ID。#23則是Access Token

#04是自訂的函式來處理Facebook API回傳的JSON格式結果。

#24~26 則是依序顯示出我們所要查詢的欄位,執行畫面如下圖:

import urllib2
import json

def get_page_data(page_id,access_token):
    api_endpoint = "https://graph.facebook.com/v2.10/"
    fb_graph_url = api_endpoint+page_id+"?fields=id,name,fan_count,link&access_token="+access_token
    try:
        api_request = urllib2.Request(fb_graph_url)
        api_response = urllib2.urlopen(api_request)
        
        try:
            return json.loads(api_response.read())
        except (ValueError, KeyError, TypeError):
            return "JSON error"

    except IOError, e:
        if hasattr(e, 'code'):
            return e.code
        elif hasattr(e, 'reason'):
            return e.reason

page_id = "148248725246010" # username or id
token = "XXXXX"  # Access Token
page_data = get_page_data(page_id,token)

print "Page Name:"+ page_data['name']
print "Likes:"+ str(page_data['fan_count'])
print "Link:"+ page_data['link']

 

相關文章:

Leave a comment

Your email address will not be published.


*