在Devise中加载自定义Omniauth提供程序的问题

时间:2016-01-05 10:29:30

标签: ruby-on-rails ruby oauth devise omniauth

我在设置与Devise一起使用的自定义OmniAuth策略时遇到问题。我在这里使用以下gem,但我不确定如何正确加载此文件并使用它。

https://github.com/aereal/omniauth-xauth

基于自述文件,我创建了一个特定于我的提供者的子类,我不知道该放置此文件的确切位置,因此我根据此 {{3}将其置于此处lib/strategies/myauth.rb }} 即可。该文件看起来像这样。删除提供者特定代码。

module OmniAuth
  module Strategies
    class Myauth < OmniAuth::Strategies::XAuth
       ...
    end
  end
end

根据此article,我将以下代码添加到config/initializers/omniauth.rb

module OmniAuth
  module Strategies
    module XAuth
      autoload :myauth, Rails.root.join('lib', 'strategies', 'myauth') 
    end
  end
end

我做了添加以下代码,因为我已经通过在我的config.omniauth :myauth中添加config/initializers/devise.rb来解读这些代码将会加载它。 ??

Rails.application.config.middleware.use OmniAuth::Builder do
   provider :myauth
end

我还在user.rb添加了以下内容 devise :database_authenticatable, :omniauthable, :omniauth_providers => [:myauth]

我还更新了我的config/initializers/devise.rb

config.omniauth :myauth, 'CKEY', 'CSEC', strategy_class => OmniAuth::Strategies::XAuth::Myauth

所以当我尝试运行rails s时,我得到以下错误输出。

`load_missing_constant': Unable to autoload constant Myauth, expected ...../PROJECT/lib/strategies/myauth.rb to define it (LoadError)

关于什么我失踪的任何想法?谢谢你的时间

1 个答案:

答案 0 :(得分:1)

您不需要config / initializers / omniauth.rb文件,因为您已经拥有myauth.rb。

您的策略类应包含以下内容:

SerializableString

只要Myauth类的内容正确,Rest就应该有效。

如果我误解了您的问题并且回答错误,请告诉我。