2012-02-06 36 views
5

Tôi mới sử dụng Rails và Omniauth, vì vậy xin lỗi trước câu hỏi câm .Xây dựng chiến lược mới cho Omniauth, nhưng Omniauth không thể tìm thấy nó

Tôi đang cố gắng thực hiện chiến lược Omniauth cho trang web Deezer. http://www.deezer.com/en/developers/simpleapi/oauth

Trước tiên, tôi thiết lập ứng dụng đường ray cơ bản để kiểm tra chiến lược Facebook. Đây là mã của tôi trong Github: https://github.com/geoffroymontel/omniauth-test

Và nó hoạt động tốt. Tốt.

Sau đó, tôi thêm vào các tập tin trong thư mục lib ứng dụng của tôi

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

và thêm

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

trong

config/initializers/omniauth.rb 

Nhưng khi tôi bắt đầu ứng dụng với

rails s 

tôi nhận được thông báo lỗi sau

/home/geoffroy/.rvm/gems/[email protected]/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/[email protected]/gems/omniauth-1.0.2/lib/omniauth/builder.rb:30:in `provider' 

Nhờ sự giúp đỡ của bạn

nhất

Geoffroy

+2

tôi thêm require 'omniauth-Deezer' trong initializers/omniauth.rb và nó làm việc. Bây giờ tôi không hiểu tại sao tôi cần nó và Facebook không ... – geoffroy

Trả lời

2

Trong Upgrading to 1.0 doc nó được đề cập rằng Omniauth cần một viên ngọc cho mỗi nhà cung cấp hiện nay , do đó, bạn sẽ phải di chuyển nhà cung cấp của bạn đến một đá quý cuối cùng.

+0

Cảm ơn! Tôi đã cố gắng để gỡ lỗi chiến lược của tôi bên ngoài của một GEM, nếu không nó là một chút đau đớn để gỡ lỗi. – geoffroy

4

tôi thêm

require 'omniauth-deezer' 

trong initializers/omniauth.rb và nó làm việc.

Tôi thực sự không hiểu tại sao tôi cần nó và Facebook thì không.

2

Để tham khảo trong tương lai, nếu bạn muốn thêm chiến lược omniauth của riêng bạn, thêm video này vào gemfile bạn

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

vì bạn sẽ được sử dụng feauture kho địa phương của gemfiles. Trong trang bundler chính thức, bạn sẽ thấy cách sử dụng repos từ xa.

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

Các vấn đề liên quan