2013-10-07 102 views
0

我想每天使用一個Ruby腳本和考拉寶石創建一個Facebook發佈。我希望能夠設置一次,而不必改變訪問權限。閱讀一些文章和Facebook documentation around Access Tokens後,我實現了以下內容:使用圖表API發佈到FB

  • 創建Facebook應用
  • 使用的圖形API瀏覽器來獲得訪問令牌自己 - 這僅持續約2小時
  • 使用下面的腳本交換短期令牌這將持續一個長期的令牌2個月
 
https://graph.facebook.com/oauth/access_token?    
    client_id=APP_ID& 
    client_secret=APP_SECRET& 
    grant_type=fb_exchange_token& 
    fb_exchange_token=EXISTING_ACCESS_TOKEN 
  • 寫以下rake任務張貼到我的Facebook牆上
 
token = "CAAFlZAPhVBO8..." 
@graph = Koala::Facebook::API.new(token) 
@graph.put_connections("me", "feed", :message => "My message!") 

有了這些設置的rake命令,我的腳本實際工作!它每天根據調度程序寫到我的牆上。

我的問題是:這個設置,我將不得不手動和使用圖形API資源管理器創建一個新的短期訪問令牌,然後用它來獲取長期訪問每兩個月令牌。此外,我將不得不在y腳本中手動更改token =「blah blah」語句。這可以避免嗎?我已經給了我創建的權限的應用程序發佈到我的牆上。有沒有辦法使用考拉(或其他寶石/庫)在腳本內自動獲取新的訪問令牌?

回答

0

一旦用戶向您的應用發佈了publish_actions權限,您還可以使用您的應用訪問令牌以他們的名義發佈牆帖 - 您只需交換me以獲取實際用戶ID(因爲沒有用戶訪問令牌API不知道「我」應該是誰)。

而組合app_id|app_secret(中間的管道符號)可以作爲應用訪問令牌。

0

您可以自動化而不是硬編碼短期標記。 您可以使用omniauth-facebook gem自動執行omniauth登錄。請參閱Github。將其添加到您的gem文件中。

gem 'omniauth-facebook', '1.4.0' 

在配置路線,一旦你成功登錄和土地的回調函數,你將存儲在響應中request.env["omniauth.auth"]["credentials"]["token"]

使用此令牌,令牌匹配回調

match '/auth/:provider/callback' => '[your controller]#[your function]' 

和每次用戶登錄時都使用長壽命令牌進行交換。您可以安全地假定用戶在長達60天的上限內登錄至少兩次以獲得長期訪問令牌。

我假設您使用Ruby on Rails,因爲您使用的是考拉寶石。

相關問題