[Python] 製作簡易 FaceBook 回覆抽獎機

在抽獎之前,我們必須先到 Facebook 所提供的網站開發工具
取得存取權杖(Access Token)才有權限讀取我們的貼文

Facebook 網站開發工具: https://developers.facebook.com

進入網站後,點選「工具與支援」,找到「圖形API測試工具」

接著就會進到圖形化 API 的介面了用戶存取權杖;以此類推,粉絲專頁就選擇粉絲專頁權杖

由於俺是個人用戶,就以個人用戶作範例。當然,粉絲專頁也只有些微的不同
選取用戶存取權杖後,便會要求我們選取這支權杖可做的權限
這邊我們需要的是按讚和貼文,勾選起來

最後點選下面的取得權杖,再登入 Facebook 完成驗證就可以讀取資料啦
在圖形化介面較常用到的地方有這幾個


紅: API 版本
藍: GET 語法以及取得 API 的回傳;例如說 me 會顯示個人資料;me/posts 會顯示所有張貼的文章。結果會顯示於下面黑色處
   當然,你也可以 GET 你能看見的其他用戶、專頁的頁面,只需要將他們的網址放在這裡。但是要注意自己的權限呦
橘: 搜索條件;例如 limit 設定資料筆數、since 設定起始時間、until 設定結束時間、fields 設定資料欄位
如果需要更直接的操作,可以點選 深入瞭解圖形 API 語法;若是想取得各大粉絲專頁的貼文留言,只需要利用上面這些素材動動腦即可

權杖部分處理完後,我們接著要在 python 上安裝 Facebook-sdk 套件,這樣就能夠藉由 python 直接進行操作

pip install facebook-sdk

完成之後我們就可以正式開工啦!

Facebook_Lottery.py
import facebook, random

token = "EAACEdEose***********oQZDZD" # 存取權杖
graph = facebook.GraphAPI(access_token=token, version='2.7') # 將存取權杖匯入 API
object_id = '688239041242821_154845**********' # 該篇貼文的 id

post = graph.get_object(id=object_id + '?fields=comments.limit(1000),likes') 
# 指定搜索該篇文章,並將回傳上限設為一千


# 按讚
likes = post['likes']['data']
print('按讚人數:', len(likes))

# 按讚者列表
likeslist = []
for like in likes:
    print (like['name']) # 印出全部按讚的人
    likeslist.append(like['name'])
print("===============")


# 留言
comments = post['comments']['data']
print('留言人數:', len(likes))

# 留言者列表,要注意似乎無法讀取到第二層被摺疊起來的留言者
commentslist = []
for comment in comments:
    print (comment['from']['name']) # 印出全部按讚的人
    commentslist.append(comment['from']['name'])
print("===============")


# 按讚加留言者
personlist = []
for someone in commentslist:
    if someone in likeslist:
        personlist.append(someone)
print('按讚加留言人數:', len(personlist))

for people in personlist:
    print (people) # 印出讚加留言的人
print("===============")


# 抽獎
no = random.randint(0, len(personlist)-1) # 從按讚加留言的人中抽選,如果單純按讚或留言就修改這裡
print("恭喜{}".format(personlist[no]))

確定可以正常運作後,就可以加以包裝使用囉!

了解更多 Facebook API 的用法:http://facebook-sdk.readthedocs.io/en/latest/api.html