我的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