2013-04-06 25 views
0

我的Koala for Rails實現時出現問題,導致發送對話框出錯,因爲我的網站的URL被Facebook認爲是無效的。考拉錯誤的URL請求

這裏是發生了什麼:

1)當我包括在發送對話框中的URL作爲herokuapp-japanized樹-URL /餐館,/ 2,Facebook的API認爲無效(API錯誤100)

2)我調試了這些URL,並且當它們遠程訪問時確實存在錯誤,因爲Facebook的API確實會驗證鏈接的有效性。這隻發生在遠程嘗試期間,而不是在用戶前往頁面時發生。

3)我已經確定在代碼中的薄弱點,並與考拉做:

def set_access_token 
     begin 
     session['fb_cookie'] ||= Koala::Facebook::OAuth.new.get_user_info_from_cookie(cookies) 
     @access_token = session['fb_cookie']["access_token"] 
    rescue Koala::Facebook::OAuthTokenRequestError 
     session['fb_cookie'] = nil 
     set_access_token 
    end 

的問題是,@access_token保持爲零,無論它之前就已經存在。我認爲這與在服務器上進行遠程請求時未設置的cookie有關 - 因此一切都會變爲零。

這裏描述的是錯誤的Heroku的日誌的記錄 - 這點匹配我的代碼顯示右上面這句話:

2013-04-06T07:59:25+00:00 app[web.1]: Processing by SessionController#home as */* 
2013-04-06T07:59:25+00:00 app[web.1]: 
2013-04-06T07:59:25+00:00 app[web.1]: NoMethodError (undefined method `[]' for nil:NilClass): 
2013-04-06T07:59:25+00:00 app[web.1]: app/helpers/session_helper.rb:18:in `set_access_token' 
2013-04-06T07:59:25+00:00 app[web.1]: app/helpers/session_helper.rb:58:in `parse_facebook_cookies' 
2013-04-06T07:59:25+00:00 app[web.1]: app/helpers/session_helper.rb:63:in `authenticate' 
2013-04-06T07:59:25+00:00 app[web.1]: 
2013-04-06T07:59:25+00:00 app[web.1]: 
2013-04-06T07:59:25+00:00 app[web.1]: Completed 500 Internal Server Error in 0ms 
2013-04-06T07:59:25+00:00 heroku[router]: at=info method=GET path=/home host=powerful-woodland-3700.herokuapp.com fwd="173.252.101.112" dyno=web.1 connect=1ms service=15ms status=500 bytes=643 

回答

0

這裏的關鍵是,當FB遠程坪我的網址,它不會激活設置Koala進入的cookie的Javascript SDK。

我已經開發了不同的認證方法,但我第一次嘗試失敗了,而不是我設置在我的控制器下面一行:

rescue_from NoMethodError, :with => :redirect_to_signin 

我認爲這也將捕獲的隨機錯誤,如過期或銷燬餅乾和其他各種不可預見的事件,並將用戶重定向到登錄頁面。

對上述任何想法都非常歡迎。