使用Graph API-實做Facebook 貼文小幫手
主題 |
使用Graph API-實做Facebook 貼文小幫手 |
介紹 |
Facebook提供Android SDK、iOS SDK、Swift SDK、JavaScript SDK…等SDK套件讓開發人員快速將Facebook功能整合進自己的產品中。 若開發人員所使用的程式語言,在Facebook官方提供SDK套件清單中沒有的話,是可以尋找第三方的SDK套件,但可能也會面臨日後第三方無繼續維護或是最新Facebook功能第三方尚未來得及時做出來…等問題。 除了使用SDK套件來整合Facebook功能之外,也可以使用Facebook官方提供的Graph API來做整合,它其實也就是一個遵守 RESTful 規範的 API。既然是遵守 RESTful規範,開發人員使用任何語言也很容易可以整合Facebook功能到自已產品中。 筆者將示範使用Java搭配Graph API來實做一個貼文小幫手機器人,將訊息自動貼文到自己的Facebook中。 |
作者 |
姜志民 |
版本 |
1.0 |
產出日期 |
2017 / 06/ 15 |
1 目的
Facebook提供Android SDK、iOS SDK、Swift SDK、JavaScript SDK…等SDK套件讓開發人員快速將Facebook功能整合進自己的產品中。
若開發人員所使用的程式語言,在Facebook官方提供SDK套件清單中沒有的話,是可以尋找第三方的SDK套件,但可能也會面臨日後第三方無繼續維護或是最新Facebook功能第三方尚未來得及時做出來…等問題。
除了使用SDK套件來整合Facebook功能之外,也可以使用Facebook官方提供的Graph API來做整合,它其實也就是一個遵守 RESTful 規範的 API。既然是遵守 RESTful規範,開發人員使用任何語言也很容易可以整合Facebook功能到自已產品中。
筆者將示範使用Java搭配Graph API來實做一個貼文小幫手機器人,將訊息自動貼文到自己的Facebook中。
2 Facebook for Developers建立應用程式
進入https://developers.facebook.com/ 網頁,按右上角「登入」。
按「建立應用程式」。
輸入相關資料,再按「建立應用程式編號」。
進入「主控板」。
先記下「應用程式編號」與「應用程式密鑰」,這兩樣東西在後續會用到。
3 安裝應用程式至Facebook帳號與取得user-id
進入https://developers.facebook.com/,按「工具及支援」。
進入「圖形 API 測試工具」。
點選「Graph API Explorer」改選擇「昕力大學貼文小幫手」。
點選「取得權杖」,在點選「取得用戶存取權杖」。
選擇「publish_actions」與「user_about_me」權限。
這個步驟將會向「Min」的Facebook帳號請求這兩個權限,並將這兩個權限給予「昕力大學貼文小幫手」應用程式使用。
再按下「確定」。
按下「提交」,用預設的RESTful Path「me?fields=id,name」查詢,將查詢到得id記下來,在後續的步驟會使用到。
4 Graph API Document
https://developers.facebook.com/docs/graph-api/reference是Graph API的Document,裡面有詳細的說明。
再剛剛上一個步驟查詢id資訊是參考https://developers.facebook.com/docs/graph-api/reference/user/。
後續要實做的貼文功能是參考https://developers.facebook.com/docs/graph-api/reference/v2.9/user/feed。
5 檢查「昕力大學貼文小幫手」應用程式是否安裝成功
登入https://www.facebook.com/,按右上角選擇「設定」。
按「應用程式」,就可以看到剛剛安裝的「昕力大學貼文小幫手」。
6 實做貼文小幫手程式
會使用到jersey-client與com.sun.jersey.contribs 套件,這個套件可以幫我們很容易call RESTful APIs,下方是Maven的pom.xml設定。
實做程式碼如下:
7 貼文小幫手執行貼文畫面結果
若是使用應用程式來執行貼文動作,在貼文中會顯示出應用程式的名稱,如下圖的紅色框框處。
8 使用Access Token時效問題
要存取Facebook Graph API要搭配Access Token才可以存取,而Access Token有效時間是兩小時,但可以延長到60天,若要繼續使用就要重新取得Access Token。
因為貼文小幫手是筆者要放在Server-side使用,為了解決Access Token時效問題,就使用「應用程式編號」+「應用程式密鑰」來當作Access Token,用這種方式就沒有時效問題。
但千萬不能把「應用程式編號」+「應用程式密鑰」來當作Access Token在Client-side使用,因為「應用程式編號」與「應用程式密鑰」是非常機密的,正常做法應該讓Client-side去向Facebook請求取得Access Token來使用。
9 結論
雖然Facebook官方沒有提供Java專用SDK套件,但有第三方提供SDK套件給Java。其實第三方SDK套件也是包裝Facebook Graph API後,讓開發人員更方便快速使用Facebook功能,但還是可能會遇到之前說的問題,面臨日後第三方無繼續維護或是最新Facebook功能第三方尚未來得及時做出來。
讀者也能嘗試自行包裝Facebook Graph API來成為自己專屬SDK套件,讓自己能更方便快速使用Facebook功能,也不用擔心剛剛所說的問題。