Python[Python教學] Facebook圖形API測試工具,取得粉絲頁按讚數
| 作者/攝影 |
曾吉弘 |
| 時間 |
2小時 |
| 成本 |
無 |
| 難度 |
* * * * |
| 材料表 |
|
本文要介紹如何使用Facebook的
圖形API測試工具(Graph API explorer) 取得粉絲頁的相關資料,最常見的應用就是讚數。如果喜歡的話,還可以結合Arduino作出有趣的互動裝置,例如以下:
https://www.youtube.com/watch?v=CohleLX6AYg
(註:本影片僅為示意,並非使用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由以下四個項目組成:
- facebook api 網址:https://graph.facebook.com/v2.10/
- 粉絲頁id:148248725246010 (CAVEr教育團隊)
- 要查找的欄位:?fields=id,name,fan_count,link&access_token=
- 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 則是依序顯示出我們所要查詢的欄位,執行畫面如下圖:

[pastacode lang="java" manual="import%20urllib2%0Aimport%20json%0A%0Adef%20get_page_data(page_id%2Caccess_token)%3A%0A%20%20%20%20api_endpoint%20%3D%20%22https%3A%2F%2Fgraph.facebook.com%2Fv2.10%2F%22%0A%20%20%20%20fb_graph_url%20%3D%20api_endpoint%2Bpage_id%2B%22%3Ffields%3Did%2Cname%2Cfan_count%2Clink%26access_token%3D%22%2Baccess_token%0A%20%20%20%20try%3A%0A%20%20%20%20%20%20%20%20api_request%20%3D%20urllib2.Request(fb_graph_url)%0A%20%20%20%20%20%20%20%20api_response%20%3D%20urllib2.urlopen(api_request)%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20try%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20json.loads(api_response.read())%0A%20%20%20%20%20%20%20%20except%20(ValueError%2C%20KeyError%2C%20TypeError)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22JSON%20error%22%0A%0A%20%20%20%20except%20IOError%2C%20e%3A%0A%20%20%20%20%20%20%20%20if%20hasattr(e%2C%20'code')%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20e.code%0A%20%20%20%20%20%20%20%20elif%20hasattr(e%2C%20'reason')%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20e.reason%0A%0Apage_id%20%3D%20%22148248725246010%22%20%23%20username%20or%20id%0Atoken%20%3D%20%22XXXXX%22%20%20%23%20Access%20Token%0Apage_data%20%3D%20get_page_data(page_id%2Ctoken)%0A%0Aprint%20%22Page%20Name%3A%22%2B%20page_data%5B'name'%5D%0Aprint%20%22Likes%3A%22%2B%20str(page_data%5B'fan_count'%5D)%0Aprint%20%22Link%3A%22%2B%20page_data%5B'link'%5D%0A" message="" highlight="" provider="manual"/]
相關文章:
留言 💬 (0)
還沒有留言,來當第一個。