Создание новой стратегии для Omniauth, но Omniauth не может ее найти - PullRequest
5 голосов
/ 06 февраля 2012

Я новичок в Rails и в Omniauth, так что заранее извините за глупости вопрос.

Я пытаюсь создать стратегию Omniauth для веб-сайта Deezer. http://www.deezer.com/en/developers/simpleapi/oauth

Сначала я установил базовое приложение для тестирования стратегии Facebook. Вот мой код в Github: https://github.com/geoffroymontel/omniauth-test

И все работает отлично. Хорошо.

Затем я добавил эти файлы в папку 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 ]

4 голосов
/ 07 февраля 2012

Я добавил

require 'omniauth-deezer'

в инициализаторах / omniauth.rb и все заработало.

Я не очень понимаю, зачем мне это нужно, а Facebook нет.

2 голосов
/ 30 мая 2013

Для дальнейшего использования, если вы хотите добавить свою собственную всенаправленную стратегию, добавьте ее в свой гемфайл

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

Вы будете использовать локальный репозиторий гемфайлов.На официальной странице упаковщика вы также увидите, как использовать удаленные репозитории.

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

2 голосов
/ 06 февраля 2012

В документе Обновление до 1.0 упоминается, что Omniauth сейчас нужен гем для каждого провайдера, поэтому вам придется в конечном итоге переместить своего провайдера в гем.

...