搜尋此網誌

2022年9月21日 星期三

Facebook API 取得短期、長期、粉絲專頁權杖

緣起:


    Twitter API 的研究算是造一段落了,所以今天開始研究 Facebook 的 API,這個東西我之前有稍微碰過,那時是教授請我做個跟 FB 還有 LINE 連結的管理購物平台,但因為是非強制性的,所以在我稍微卡關後就沒繼續研究下去了。現在我必須打敗這東西,這可是我的工作,總不能說句我不會後就擺爛 (老闆:you are fired)。

    我感覺我在研究完 Twitter API 後,對這種第三方 APP 跟 OAuth 的概念有很多的進步,今天在看 Facebook 的 API 還滿快的,說實在的,Facebook 的 API 使用比起 Twitter 或 LINE 的 API 真的是雜很多,Facebook 的功能太多,但我今天上午還是成功研究出它 API 的使用方法。


Facebook Developer:


    首先我們要用自己的 Facebook 帳號來註冊 developer,網址在這邊,有點忘了那時是怎麼註冊的,不過不難就是了。註冊完後,之後可以先在 Facebook 登入自己的帳戶後,再進去 Facebook developer 的網頁,它就會以你的 Facebook 帳戶來登入了。

    登入後,網站上方的導覽列會有 "我的應用程式" 這個選項,點進去後就能開始管理自己的 APP。


    點選 "建立應用程式" 開始新增 App,一開始是選 App 類型,看起來企業商家才是符合我自動 po 粉絲頁文需求的 App 類型。


    然後再打個 App 的名字就完成了,之後就能在管理版上面看到自己的 App。App 弄好後,可以去設定->基本資料那邊看到 App 的 ID 跟 Security Key,再來 token 跟 App 權限之類的東東,在 Graph API 裡就能處理了。



把 App 加入粉絲專頁:


    首先要建個粉絲專頁,這個不難,隨便弄就能生一個出來。


    然後去 App 的 Graph API 那邊,選擇取得粉絲專頁存取權杖


    之後就會跳個框框讓你確定、選擇你要使用的粉絲專業


    完成後,你可以在 Facebook 的 設定和隱私 -> 設定 -> 帳號安全還登入 -> 企業整合工具那邊看到已加入的 App,也可以在那邊編輯 App 對你粉專的存取權限。


    這樣就行了。


取得短期用戶權杖:


    這個東西是 API 的核心 (token),你在使用任何 API 的功能都一定會需要它。然後說個我犯的一個滿白痴的錯,我原本以為這東西也是能透過 http request 來拿的,在看這篇解說時看到以下的描述,以為拿到應用程式存取權杖 = 拿到用戶權杖,所以就把拿到的應用程式權杖拿去餵給其它 API 端點,結果不是回應錯誤不然就是拿到空資料。


    最後我發現,那個短期權杖真的就只能你手動在 Graph API 中點 "產生權杖" 來得到,權杖的有效時間是兩個小時,所以你要在這段期間內用這個權杖來得到一個長期權杖,接著就能用長期權杖來做自動化的事、甚至是更新權杖。

    要取得短期權杖就直接到 Graph API 上選好選項、設好權限,然後按下 Generate Access Token,他就會跳出要你帳戶確認的頁面,你認可後就能複製存取權杖欄位的權杖資料來使用了。



Curl:


    題外話,在使用 http request 時,可以使用 curl 這個指令,就打 curl -X GET "網址" 就行了,很多 API 的存取範例都有提供 curl 的指令打法。我原本以為,這個指令就只有在 linux 上有,但 Windows 現在好像也有內建這個指令,可以在 cmd 裡打,可以多利用。


產生長期權杖:


    拿到短期權杖後,就能拿它來得到為期 60 天的長期權杖了,教學文在這。用 http 的 GET 就能得到,請求的格式長這樣。

curl -i -X GET "https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=APP-ID&client_secret=APP-SECRET&fb_exchange_token=SHORT-LIVED-USER-ACCESS-TOKEN"

    grant_type 固定是 fb_exchange_token,client_id 跟 client_secret 就是 App 的 ID 跟 Security Key,最後那個 fb_exchange_token 是填我們拿到的短期權杖,用 curl 送出後,沒意外的話會得到一個 json,第一個欄位就是長期權杖的值了


    到時權杖快過期時,可以再重覆一次這個步驟,把快到期的長期權杖當成 fb_exchange_token 的值來對 end point 提出請求,拿到新的權杖。


粉絲專頁權杖:


    如果能取得長期權杖的話,那取得粉絲專頁的權杖也就簡單了,取得粉絲專頁的權杖後就能對粉絲專頁做操作了,這邊是教學。下面是請求的格式

curl -i -X GET "https://graph.facebook.com/PAGE-ID?fields=access_token&access_token=USER-ACCESS-TOKEN"

    這邊需要取代的是 PAGE-ID 跟 USER-ACCESS-TOKEN,PAGE-ID 部份,需要點進粉絲專頁的首頁,從網址上找,應該會看到 你粉絲專頁的名字-一串數字,那串數字就是粉絲專頁的 Page ID。


    用 curl 把請求送出後,沒意外的話一樣會收到一個 json 回應,第一個欄位就是粉絲專頁的權杖了。


    這裡還有說


    可以的話,先使用短期使用者權杖來拿到長期使用者權杖,再拿那個使用者權帳來得到永久的粉絲專頁存取權杖。

    權杖的部份完成,結下來就要拿權杖來做事了。



沒有留言:

張貼留言