2012-04-26 38 views
0

我在使用Sinatra和Rack的Facebook Canvas应用程序中使用会话。使用Sinatra for Facebook Canvas应用程序的未定义方法“会话”

发生在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' 

我需要升级/降级降低机架的版本,或者添加一些代码块,使这件事情的工作试过吗?

编辑

还隔着这个问题,我有一个问题在Facebook的帆布整合我的申请其主要原因是config.ru加入这一行解决来临前:

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

回答

1

使用env['rack.session']代替从Facebook收到的POST请求中的session[]解决了此问题。希望这有助于解决此类问题

虽然它因为没有完全解决并发症,现在在同一职位的回调显示添加redirect to代码:undefined method secure?错误。

我还没有能够解决这个问题,虽然我所做的是避免重定向的东西,而是添加一个功能控制器来处理不同的请求。

相关问题