我正在尝试使用我的Rails 3应用程序实现Omniauth。我按照Railscast episod 205中的教程进行操作,但无法使其工作。当我调用'/ auth / twitter'(它不能与任何提供程序一起工作)时,Rails会抱怨它无法找到合适的路由(它会尝试加载我的默认路由)。
我在config/initializers/
下添加了omniauth.rb,将gem 'omniauth'
放入我的Gemfile中,然后运行了bundle install。
我不确定如何调试此问题,也不知道提供哪些信息来帮助理解问题。
答案 0 :(得分:1)
经过一番研究,我找到了解决方案。我在routes.rb文件中添加了以下内容:
获取'auth /:provider'=> '认证#中继'
和我的身份验证控制器:
def passthru
render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false
end
不确定为什么我必须这样做,但它正在运作......
答案 1 :(得分:1)
以下是我的步骤:
1)将omniauth添加到您的Gemfile
2)将omniauth策略添加到您的Gemfile(例如omniauth-linkedin
)
3)运行bundle install
4)在config/initializers/omniauth.rb
5)添加匹配auth/:provider/callback
=> users#omniauth
路由到routes.rb
(指向您将处理身份验证响应的控制器/操作)
6)构建操作以处理您在步骤#4中引用的控制器中的身份验证响应
7)重启您的网络服务器
在重新启动Apache之前,我无法识别默认的/auth/:provider
路由。
答案 2 :(得分:0)
你必须在你的gemfile中添加'omniauth-twitter',并且
:strategy_class => OmniAuth::Strategies::Twitter
到你的omniauth.rb
,在Twitter提供商的最后。
然后它将识别/ auth / twitter路径。