我正在尝试为我的应用程序使用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不兼容。
答案 0 :(得分:2)
我在OmniAuth的Github页面https://github.com/intridea/omniauth/issues/397上创建了一个问题,其中包含上述详细信息,这是OmniAuth的创建者Michael Bleigh的回复:
“OmniAuth从未正式支持过Rails 2.3.x - 我听说有些人对此有好运,但这并不能保证。抱歉!”
所以看起来我上面发布的方法可能适用于某些人。为了保证正确的操作,需要Rails 3。