取得臉書專頁貼文永久權限(offline access_token)

因為工作的關係幫單位寫了一個轉貼公告消息到臉書專頁的PHP程式,但最近發現轉貼的功能不動了。
原來是現在使用PHP SDK取得的access_token只有1小時的壽命,以前是永久性(offline)access_token,所以為了取得永久性access_token,爬了好多文才找到方法,才真正解決了這個問題。

請依照以下步驟取得永久性access_token:
  1. 在瀏覽器網址列輸入以下網址,然後運行網頁後,會在網址列取得一串新的網址:
  2. https://www.facebook.com/dialog/oauth?
    client_id=應用程式 ID&
    redirect_uri=運行PHP SDK的完整網址,此網域必須和應用程式網域相同

    範例:瀏覽器網址列輸入https://www.facebook.com/dialog/oauth?client_id=應用程式 ID&redirect_uri=http://test.ntu.edu.tw/index.php

    得到新網址:
    http://test.ntu.edu.tw/index.php?
    code=AQARaTYme56oH_pC0n9qrfawrPA0dhRz4aKwCdjlMfwJ8aFMTh31pudqdvad5oUOmnhsE34ud7vfsbthcmKYqCRpgf3WQbIDZNd7PGvfEoVKls5ZoYHY3Odorh_4yTu6gCjEyMYYiUpdZ6wXJK7dq_rtII3THrE28Q7Sd9aNj9ZOGvpOdXYIOicQVbDo6YXMX1LdVr5LXZEpeSSxAylHt#_=_

  3. 複制新網址關鍵字code以後的內容,並放入以下相同的位址,然後運行網頁
  4. https://graph.facebook.com/oauth/access_token?
    client_id=應用程式 ID&
    redirect_uri=http://test.ntu.edu.tw/index.php&
    client_secret=應用程式密鑰&
    code=AQARaTYme56oH_pC0n9qrfawrPA0dhRz4aKwCdjlMfwJ8aFMTh31pudqdvad5oUOmnhsE34ud7vfsbthcmKYqCRpgf3WQbIDZNd7PGvfEoVKls5ZoYHY3Odorh_4yTu6gCjEyMYYiUpdZ6wXJK7dq_rtII3THrE28Q7Sd9aNj9ZOGvpOdXYIOicQVbDo6YXMX1LdVr5LXZEpeSSxAylHt#_=_

    此時網頁內容會出現一串文字,複製紅字部份
    access_token=BAADZBcojVI3UBANoiZBWUSCWHuDE9HyLxx5MyILH1GnNvIvZAODZBab8YVOleECDZAvJBPBuEk22v0Y9p8LDyZBX2GIiNHR9vdZBJo5BFZBh693xtXkfDPYDQZCKi3IZCdFJQEYd3AUGYlVsSs9xOTB6RtS0Kb7puZBqKOqZAKZBwrDZCLaPpV8JqpmIlVFb8vcZD&expires=5183974

  5. 將上一步驟所複製的字串,放到關鍵字access_token後,再運行網頁,此時會下載一個json檔,永久性的access_token就在裡面。
  6. https://graph.facebook.com/me/accounts?access_token=BAADZBcojVI3UBANoiZBWUSCWHu9HyLxx5MyILH1GnNvIvZAODZBab8YUhgVOleECDZAvJBPBuEk22v0Y9p8LDyZBX2GIiNHR9vdZBJo5BFZBh693xtXkfDPYDQZCKi3IZCdFJQEYd3AUGYlVsSs9xOTBM1HKb7puZBqKOqZAKZBwrDZCLaPpV8JqpmIlVFb8vcZD

  7. 開啟json檔
  8. {
    "data": [
    {
    "category": "University",
    "name": "",
    "access_token": "BAADZBcojVI3UBAAxS2bUhc7i8jF1MFGvDgUrZCcs5Rh8tGM81QdSnkWbIPWyTeOEzVsYKjwjISyZCCS6drFHZApx2hzuZBivysbbhYPKcfntTN5nElRTbGkiW8XStTf1SjdXZCJCVZArZCBCTkxxDXvKYprYEPzaZC61wU46s0s0WDlsoRUEbZAzHQlstXAZDZD",
    "id": "87654321",
    .....