Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 通过内置的Omniauth支持帮助使用Desive_Ruby On Rails_Authentication_Oauth_Devise_Omniauth - Fatal编程技术网

Ruby on rails 通过内置的Omniauth支持帮助使用Desive

Ruby on rails 通过内置的Omniauth支持帮助使用Desive,ruby-on-rails,authentication,oauth,devise,omniauth,Ruby On Rails,Authentication,Oauth,Devise,Omniauth,我试图跟随,但不知何故,当我查看生成的路由时,我只看到回调路径,而没有看到授权路径(事实上,我在用户\u omniauth\u authorize\u path链接的视图中看到了错误) 我想这可能是OmniAuth和Desive()的版本问题。但是,当尝试使用较旧的OmniAuth版本时,会出现错误“如果您使用的是较旧的OmniAuth版本,请确保安装了0.2.0.beta或更高版本。” 我尝试与Deave的master 1.2.rc和omniauth分支以及整个omniauth gem(0.2

我试图跟随,但不知何故,当我查看生成的路由时,我只看到回调路径,而没有看到授权路径(事实上,我在用户\u omniauth\u authorize\u path链接的视图中看到了错误)

我想这可能是OmniAuth和Desive()的版本问题。但是,当尝试使用较旧的OmniAuth版本时,会出现错误“
如果您使用的是较旧的OmniAuth版本,请确保安装了0.2.0.beta或更高版本。

我尝试与Deave的master 1.2.rc和omniauth分支以及整个omniauth gem(0.2.0.beta之后)和“OAOAuth”一起工作,但没有成功。 我还尝试定义路线:

match '/users/auth/:action/', :to => 'users/omniauth_callbacks#action', :as => 'user_omniauth_authorize'
这有助于路线,但当按下链接时,我确实得到了一个错误,即Desive找不到地图。有趣的是,将Desive_中的控制器更改为无效(例如在用户/omniauth_回调之前添加“/”)第一次导致错误(“控制器名称不应以斜杠开头”),但一次小的重新加载实际上将我发送到facebook并返回(但回调路径自然没有定义)

我是Ruby的新手,不太清楚我将从这里走向何方。任何帮助都将不胜感激。

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

config.omniauth :facebook, FACEBOOK_APP_ID, FACEBOOK_APP_SECRET
然后您应该像这样构建授权链接:

<%= link_to "Facebook Sign in", user_omniauth_authorize_path(:facebook) %>

我的问题是由于omniauth和Desive的不同版本造成的。最终起作用的是在我的文件中使用此配置:

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

您可以查看有关我的实现的更多详细信息。

正如我所提到的-在我看来,此链接不起作用(未定义的方法)。我的问题是,我没有点击0.2测试版。你使用的是什么提供商,我刚刚用Desive 1.2rc升级到oauth 0.2.0.beta5,facebook对我来说很好。Desive 1.4.5和omniauth 0.3.0.rc3很好。一定要重新启动服务器——它永远不会出现在rake路由中。你解决过这个问题吗?不管怎样,一个简单的服务器重新启动为我解决了它。看起来像是Desive 1.4.8中的一个问题;omniauth 0.3.0和Desive 1.4.7对我很有用。将Desive:omniauthable放在用户模型上。这将解决problem@JudeArasu-它已经存在(查看实施链接)-仍然不起作用。