工程筆記本 / Python

Python

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

鄭 建彥📅 2017-08-18👁 67
作者/攝影  曾吉弘
時間   2小時
成本
難度  * * * *
材料表
  • 個人電腦
  • Facebook帳號
本文要介紹如何使用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由以下四個項目組成:
  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 則是依序顯示出我們所要查詢的欄位,執行畫面如下圖: [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)

還沒有留言,來當第一個。