2012-04-04 118 views
3

我有一個ColdFusion網頁,每隔x分鐘由我的服務器刷新一次。該腳本檢查各種訂閱源(Facebook,YouTube和內部新聞項目)並按時間順序構建合併的訂閱源。 Facebook部分只是從我們的Facebook粉絲頁面中提取發佈數據。我可以使用從我們的帳戶授權我的應用程序時提供的OAuth令牌來執行此操作。服務器端OAuth Facebook令牌刷新

令牌每隔幾個月就會過期,或者我想。它持續了很長一段時間,而且我已經閱讀,沒有辦法自動授權應用程序。然而,我不斷閱讀這些刷新標記或其他內容,但無法清楚地瞭解它們的工作方式。

我想我的腳本試圖從Facebook獲取JSON數據,並且如果令牌經常過期,請重新請求它,但似乎只是點擊graphs.facebook.com/oauth/authorize鏈接再次不起作用,因爲顯然你需要登錄才能授權。

無論如何,我可以在內部重新授權或刷新我的令牌服務器端。這個Facebook應用程序,網站和Facebook用戶都是完全內部的。曾經有一個Facebook頁面的RSS源,但Facebook總是改變一些東西,而我不再看到它。

我真正需要的是我的Facebook公司頁面的時間線/ Feed中的數據。

任何解決方案或建議都會有所幫助。

回答:這就是我最終用來獲取基於內容的數據。在抓取令牌的下方,然後使用該令牌抓取饋送數據並將其放入結構中。它可能不是最簡潔的方式,但它的工作原理。

<cfhttp url="https://graph.facebook.com/oauth/access_token?client_id=[CLIENTID]&client_secret=[CLIENTSECRET]&grant_type=client_credentials&redirect_uri=[URL] " 
     result="AccessHTTP" /> 
<cfset token = replace(AccessHTTP.Filecontent,"access_token=", "", "ALL")> 

<cfhttp result="result" url="https://graph.facebook.com/[USERNAME]/posts?access_token=#token#" ></cfhttp> 
<cfset Facebook = deserializeJSON(result.filecontent).data /> 

回答

0

我只是抓住每一次我的頁面加載令牌..

<cfhttp url="https://graph.facebook.com/oauth/access_token?client_id=your_client_id&client_secret=your_secret&grant_type=client_credentials" result="ThisHTTP" /> <cfset this.access_token = '#replace(ThisHTTP.Filecontent,"access_token=", "", "ALL")#'>

///運行代碼使用下面#this.access_token#當你需要它。 ///

+0

因此,在客戶端祕密的情況下,每次都可以獲取令牌?我只是使用: 'https://graph.facebook.com/oauth/authorize?type = user_agent&client_id = YOUR_CLIENT_ID&redirect_uri = REDIRECT_URL&scope = offline_access' Facebook文檔在我看來是糟糕的,我沒有看到格式你列在上面。我將不得不嘗試一下。 – Leeish 2012-04-05 16:42:56

+0

它迫使我加入redirect_uri,因爲oAuth不停地給我一個錯誤,說它需要它,但是之後它確實很好。我將添加答案,原來的帖子,所以它在那裏。 – Leeish 2012-04-11 17:29:52