2014-11-16 28 views
7

我的情況和我有什麼:如何更新/延長Facebook的訪問令牌與考拉寶石都

  1. Rails應用程序(Rails的的最後一個版本)
  2. 考拉寶石(最新版本)
  3. 1(一)Facebook的用戶 - (!)(例如,它就是我),這是所有的,沒有更多的用戶
  4. 頁面在網站上沒有任何FB登錄表單/類似的東西

現在的情況:

我在一個網站上創建頁面,我的代碼應該拉離我的Facebook賬戶最新帖子並顯示在頁面上。

我已經這樣做:

  1. 我加入考拉寶石
  2. 然後,我在FB中創建的應用程序在我的開發人員帳戶,並授予該應用程序完全訪問我的個人資料(這相同的配置文件 - 開發者,並從我想拉帖)
  3. 然後,我從這裏創建應用程序訪問令牌(https://developers.facebook.com/tools/accesstoken) - 當我調試它,FB告訴我,這個令牌是一個短期的令牌,在1小時內過期。
  4. 然後我創建的代碼在我的模型:

    oauth = Koala::Facebook::OAuth.new(APP_ID, APP_SECRET) 
    new_access_info = oauth.exchange_access_token_info self.get_token <- here i pull token from DB 
    
    new_access_token = new_access_info["access_token"] 
    new_access_expires_at = DateTime.now + new_access_info["expires"].to_i.seconds 
    
    self.update_all(:token => new_access_token) ***<- saving token in db*** 
    self.update_all(:exp => new_access_expires_at) ***<- saving expiration of token in db*** 
    
    @facebook ||= Koala::Facebook::API.new(self.get_token) 
    

所以,我第一次把我的短版活令牌直接在DB,所以我的代碼可以從那裏拉,那麼,當我重新加載頁面,我得到了新的,長期的令牌(它的有效期爲2015年12月1日)。

但是!當每次我重新加載我的頁面,我得到新的令牌,但有SAME到期日期(FB的調試器說我一樣,當我從我的頁面複製令牌並將其粘貼到調試器中)。

我甚至試圖做這在不同的日子,因爲我讀「的地方」該令牌裝修週期爲每天一次,但:

令牌總是不同的,但到期日期總是相同的。

我需要的:

要續訂該令牌或寫代碼,使該令牌不從我身邊的動作自動更新,因爲沒有登錄窗口或類似的東西。它只能從服務器端運行。

有什麼想法?已經閱讀了很多信息和類似的問題,但大多數問題都與用戶交互有關,例如以適當的形式登錄等,所以 - 沒有運氣:/

+0

@Jobili,確實工作邁克的解決方案? –

回答

0

您可以嘗試此方法。

@oauth = Koala::Facebook::OAuth.new(ENV['fb_app_id'], ENV['fb_app_secret']) 
oauth_access_token = @oauth.get_app_access_token 

@graph = Koala::Facebook::API.new(oauth_access_token) 
+0

'get_app_access_token'獲取應用程序訪問令牌,該令牌只能用於「修改和讀取應用程序設置」和「發佈Open Graph操作」。 https://developers.facebook.com/docs/facebook-login/access-tokens –