8

我尝试关注https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview,但不知何故,当我查看生成的路由时,我只看到回调路径,而不是授权路径(实际上我得到了user_omniauth_authorize_path 链接的视图错误)。

我认为这可能是 OmniAuth 和 Devise 的版本问题(因为在 0.2.0.beta Omniath 之后允许可配置设置,并且必须定义路由)。但是,当尝试使用较旧的 OmniAuth 版本时,我收到错误“ You are using an old OmniAuth version, please ensure 0.2.0.beta or later installed.”。

我尝试使用 Devise 的 master 1.2.rc 和omniauth 分支以及整个omniauth gem(0.2.0.beta 之后)和'oa-oauth',但没有成功。我还尝试定义路线:

match '/users/auth/:action/', :to => 'users/omniauth_callbacks#action', :as => 'user_omniauth_authorize'

这有助于路线,但是当按下链接时,我确实得到了设计找不到映射的错误。有趣的是,将 devise_for 中的控制器更改为无效(例如在 users/omniauth_callbacks 之前添加“/”)第一次导致错误(“控制器名称不应以斜杠开头”),但实际上发送了一个小的重新加载我到 facebook 并返回(但自然没有定义回调路由)。

我是 Ruby 新手,不太确定我从这里去哪里。任何帮助将不胜感激。

4

2 回答 2

6

此方法由 devise 定义,而不是通过路由定义。因此,它不会在您运行时显示rake routes。该方法采用您在 config/initializers/devies.rb 中配置的 oauth 提供程序之一。例如,如果您在 devise.rb 中定义以下内容:

config.omniauth :facebook, FACEBOOK_APP_ID, FACEBOOK_APP_SECRET

然后你应该像这样构建授权链接:

<%= link_to "Facebook Sign in", user_omniauth_authorize_path(:facebook) %>
于 2011-03-02T21:34:10.607 回答
0

我的问题是由于omniauth 和devise 的不同版本造成的。最终奏效的是在我的 gemfile 中使用这个配置:

gem 'devise', :git => 'git://github.com/plataformatec/devise.git'
gem 'omniauth', '>=0.2.0.beta'
gem 'oa-oauth', :require => 'omniauth/oauth'

您可以在此处查看有关我的实施的更多详细信息。

于 2011-10-14T19:09:13.253 回答