为Omniauth制定新策略,但Omniauth无法找到它

时间:2012-02-06 11:00:33

标签: ruby-on-rails omniauth

我是Rails和Omniauth的新手,所以对于愚蠢的事先抱歉 问题

我正在为Deezer网站做一个Omniauth策略。 http://www.deezer.com/en/developers/simpleapi/oauth

首先,我设置了一个基本的rails应用程序来测试Facebook策略。 这是我在Github的代码: https://github.com/geoffroymontel/omniauth-test

它工作正常。好。

然后我在app lib目录中添加了这些文件

lib/omniauth-deezer.rb
lib/omniauth/deezer.rb
lib/omniauth/deezer/version.rb
lib/omniauth/deezer/strategies/deezer.rb

并添加了

provider :deezer, ENV['DEEZER_APP_ID'],
ENV['DEEZER_APP_SECRET'], :perms => 'basic_access,email'

config/initializers/omniauth.rb

但是当我用

启动应用程序时
rails s

我收到以下错误消息

/home/geoffroy/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd/gems/omniauth-1.0.2/lib/omniauth/builder.rb:33:in `rescue in provider': Could not find matching strategy for  :deezer. You may need to install an additional gem (such as omniauth-deezer). (LoadError) from /home/geoffroy/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd/gems/omniauth-1.0.2/lib/omniauth/builder.rb:30:in `provider'

感谢您的帮助

最佳

弗鲁瓦

3 个答案:

答案 0 :(得分:4)

我添加了

require 'omniauth-deezer'

在initializers / omniauth.rb中并​​且有效。

我真的不明白为什么我需要它而Facebook却没有。

答案 1 :(得分:2)

Upgrading to 1.0文档中提到Omniauth现在需要为每个提供商提供一个gem,因此您最终必须将提供者移动到gem。

答案 2 :(得分:2)

为了将来参考,如果您想添加自己的omniauth策略,请将其添加到您的gemfile

gem 'omniauth-mystrategy', :path => '~/full-path-to-the-omniauth-folder/'

您将使用gemfiles的本地存储库功能。 在官方的捆绑页面中,您将看到如何使用远程回购。

http://gembundler.com/v1.3/gemfile.html