【问题标题】:Issues with loading custom Omniauth provider in Devise在设计中加载自定义 Omniauth 提供程序的问题
【发布时间】:2016-01-05 10:29:30
【问题描述】:

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

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

根据自述文件,我为我的提供者创建了一个特定的子类,我真的不知道将这个文件放在哪里,所以我把它放在这里 lib/strategies/myauth.rb 基于这个 article .该文件看起来像这样。删除提供程序特定代码。

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/initializers/devise.rb 中添加 config.omniauth :myauth 将负责加载它。 ??

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)

关于我缺少什么的任何想法?感谢您的宝贵时间

【问题讨论】:

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


    【解决方案1】:

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

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

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

    只要 Myauth 类的内容正确,Rest 应该可以工作。

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

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      相关资源
      最近更新 更多