我正在從this reference開始工作,並嘗試實施OAuth協議以允許用戶通過Facebook登錄我的網站。但是,Facebook的文檔非常糟糕,並且在幾個關鍵部分都不清楚。如何續訂過期的Facebook訪問令牌?
它說,授權採取三個步驟:
用戶認證(用戶重定向到
https://facebook.com/dialog/oauth?client_id=...&redirect_uri=...
,並期望被稱爲回redirect_uri
頁用code
)。很棒!應用程序授權(由Facebook等處理)。很棒!
應用認證(在回調頁面,搶
code
你並調用https://graph.facebook.com/oauth/access_token?client_id=...&redirect_uri=...&client_secret=...&code=...
,響應的主體將包括access_token
我們需要做的東西)
據我所知,與access_token
,我可以調用API等。但是,到期時會發生什麼?我可以得到一個新的,但是到了這個時候,以後會有很多的HTTP請求,而且我不再有我以前用它來獲得它的code
。我是否需要將code
與access_token
一起存放?或者,我必須告訴用戶再次登錄,因此我得到一個新的code
以獲得新的access_token
?
或者,我錯過了關鍵部分嗎?我不需要一個offline_access
令牌,因爲我只會輪詢數據以響應用戶操作。
所以,等等,你是說我應該在每一頁加載時重新進行身份驗證?這不會增加到我的服務器的請求數量嗎? –
您只需在access_token過期時重新進行身份驗證。獲取access_token的響應還包括一個expires參數,該參數是access_token到期前的秒數。您知道何時發佈令牌,因此您只需根據秒數檢查它是否已過期。如果有,請換一個新的。如果沒有,那麼繼續使用它。 – Owen
哦,好的。幸運的是,這是我之前得出的結論。當令牌過期時,我只需在OAuth過程的開始處插入重定向。 –