如何正确使用OmniAuth与Rails 2

时间:2011-07-13 23:12:05

标签: ruby-on-rails mongrel omniauth middleware

我正在尝试为我的应用程序使用OmniAuth(0.2.6)策略。该架构是Rails 2.3.10,Rack版本是1.1(OmniAuth需要此版本或更高版本)。出现的问题是Rails无法识别我的重定向到“/ auth / provider”。实际的错误消息是“No route matches”/ auth / casport“。即使抛出该错误,代码似乎也会执行该错误:”request.env ['omniauth.auth']“,我很确定这意味着它无法识别env哈希的“omniauth.auth”键。我感觉OmniAuth没有正确加载。我已经使用Mongrel和Webrick测试了相同的策略和代码库,我得到相同的错误信息。

这是我的OmniAuth初始化程序(config / initializers / omniauth.rb):

ActionController::Dispatcher.middleware.use OmniAuth::Builder do
  provider :casport, :setup => true
end

我绝对有auth / casport / setup和auth / casport / callback的路径。

我也试过这种方法:How do you implement OmniAuth on Rails 2.2?

config.middleware.use OmniAuth::Builder do
  provider :casport, :setup => true
end

将该中间件代码放在config / environments / development.rb文件中。

有没有人对我可能做错了什么有任何想法?谢谢!

编辑:我也尝试过这种方法Has anyone used omniauth with rails 2.3.8?

ActionController::Dispatcher.middleware.use OmniAuth::Strategies::Casport = {
  :setup => true
}

并返回读取错误:“NoMethodError:#Hash的未定义方法'new'

编辑2:我已升级到Rails 2.3.10,因为OmniAuth与Rails 2.3.4不兼容。

1 个答案:

答案 0 :(得分:2)

我在OmniAuth的Github页面https://github.com/intridea/omniauth/issues/397上创建了一个问题,其中包含上述详细信息,这是OmniAuth的创建者Michael Bleigh的回复:

“OmniAuth从未正式支持过Rails 2.3.x - 我听说有些人对此有好运,但这并不能保证。抱歉!”

所以看起来我上面发布的方法可能适用于某些人。为了保证正确的操作,需要Rails 3。