2012-07-21 82 views
0

爲了解決a question on Stack Exchange Web Applications中詳細描述的問題,我編寫了一個PHP腳本,該腳本給出了一個頁面名稱,並且正確的access_token將該頁面創建的事件作爲iCal日曆文件進行分析。很明顯,這個文件不應該被人類訪問,而是例如用於訂閱的Google日曆。用於簡單信息檢索的Facebook Graph API身份驗證

我通過Facebook Graph Explorer創建了access_token,後來才意識到它已過期。所以問題是:我可以得到一個不會過期的頁面access_token嗎?如果沒有,我可以得到一個很長的到期期限嗎?

如果這是不可能的 - 有沒有人有線索該怎麼辦?手動提供access_token一小時一次並不覺得可行。

+0

首先獲取長時間的用戶訪問令牌(請參閱https://developers.facebook.com/roadmap/offline-access-removal/)。如果您使用該令牌獲取您的頁面訪問令牌,則默認情況下後者不會過期。 – CBroe 2012-07-21 10:02:18

+0

謝謝@CBroe!這個提示讓我走上了正確的軌道。我已經詳細解答了答案,請參閱下文。 – 2012-07-21 19:43:16

回答

1

@CBroe讓我走上正軌,@ MPaulo幫助我進一步。下面是我在創建的腳本文件的開始部分解釋過程,以解決上述問題開始時鏈接到的問題中描述的問題。


首先,您需要一個訪問令牌。這是一件複雜的事情 - 定期做一件很容易,但我們希望永久持續。如方案5描述如下:https://developers.facebook.com/roadmap/offline-access-removal/,我們需要:

  1. 獲取定期短暫的訪問令牌
  2. 換取一個長期的訪問令牌
  3. 使用我們新的訪問令牌,得到永久頁面訪問令牌。

首先,創建一個新的Facebook應用程序https://developers.facebook.com/apps/。它可以任意命名,它不會被真正使用。填寫一個域 - 無論哪一個,只顯示一個顯示簡單HTML並且不執行任何重定向的內容:我使用自己的靜態網頁http://jobjorn.se/,但http://example.org/也可以工作。

由於對堆棧溢出這裏指示由MPaulo:https://stackoverflow.com/a/11238327/564628,使用應用程序ID - 由新創建的應用程序 - 並且訪問此頁: https://www.facebook.com/dialog/oauth?client_id=MY_APP_ID&redirect_uri=MY_SITE_URL&scope=manage_pages&response_type=token 一定要取代「MY_APP_ID」和「MY_SITE_URL」。

然後,請訪問此頁面換取長期訪問令牌的短暫訪問令牌: https://graph.facebook.com/oauth/access_token?client_id=MY_APP_ID&client_secret=MY_APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=YOUR_ACCESS_TOKEN 一定要取代「MY_APP_ID」,「MY_APP_SECRET」和「YOUR_ACCESS_TOKEN」(最後被訪問令牌你從第一頁開始接收)

最後,讓你的頁面訪問令牌這裏: https://graph.facebook.com/me/accounts?access_token=YOUR_NEW_ACCESS_TOKEN 一定要取代「YOUR_NEW_ACCESS_TOKEN」(訪問令牌,你從第二頁收到)

粘貼在下面。它應該是永久的,但由於錯誤可能只會持續兩個月 - 詳情請參閱https://developers.facebook.com/bugs/151056591697025。它似乎已經修復。您可以在此處進行測試:https://developers.facebook.com/tools/debug/access_token

0

創建一個應用程序並使用該應用程序的憑據進行身份驗證。只要您沒有閱讀用戶特定的數據,就不需要用戶access_token。

+0

我正在閱讀用戶特定的數據 - 要通過API訪問頁面的事件,您必須成爲頁面的管理員。 – 2012-07-21 19:37:32