2012-04-26 12 views
0

SinatraとRackを使用してFacebook Canvasアプリケーションでセッションを使用しています。SinatraをFacebook Canvasアプリケーション用に使用した未定義のメソッド 'session'

Facebookのキャンバスに発生するエラーは、次のとおりです。

NoMethodError - undefined method `session' for #<Hash:0xa3ed0a0>: 
    /home/apoorv/.rvm/gems/ruby-1.9.2-p320/gems/sinatra-1.3.2/lib/sinatra/base.rb:170:in `session' 

次のように私は自分のアプリケーションを実行したときため、問題がラックに確実である:

ルビーapplication.rb -p 3000

エラーを表示していません。私はラックバージョン1.3.6と1.4.1をインストールしようとしましたが、エラーは解決しません。

私はまた、代わりにenable :sessions

use Rack::Session::Cookie, :key => 'rack.session', 
          :domain => 'static.ak.facebook.com', 
          :path => '/', 
          :secret => 'change_me' 

の次のコードを使用してみました、私はラックの下のバージョンに劣化する/アップグレードするか、この事を動作させるために、コードのいくつかの作品を追加する必要はありますか? env['rack.session']の代わりを使用して

set :protection, :except => [:remote_token, :frame_options] 

答えて

1

は、この問題全体に来る前に、私はconfig.ruにこの行を追加することで解決しましたFacebookのキャンバスに自分のアプリケーションを統合する問題があった。また

を編集しましたFacebookから受信したPOSTリクエストのsession[]はこの問題を解決しました。 undefined method secure?エラー:これは今、同じPOSTコールバックディスプレイのredirect toコードを追加し、ので、それはない完全解決合併症を持っていますが、このような問題

を解決するのに役立ちます願っています。

私はリダイレクトの問題を回避し、コントローラにさまざまな要求を処理する機能を追加しましたが、この問題を解決することはできませんでした。

関連する問題