使用Graph API-實做Facebook 貼文小幫手

姜志民 2017/06/16 05:21:47
363






主題

使用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功能,也不用擔心剛剛所說的問題。

姜志民