0

我正在尝试将 twitter 与我的 rails 应用程序中的设计集成。

但是,我收到此错误找不到 Devise::OmniauthCallbacksController 的操作“twitter”

我的路线文件包含:

  devise_for :conrollers => {:omniauth_callbacks =>  "omniauth_callbacks"}

我已经看到了一些线程,但不太能够解决这个问题。请帮忙。这是我的控制器

class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def twitter
    raise request.env["omniauth.auth"].to_yaml
end

#alias_method :twitter, :all

结尾

4

3 回答 3

0

您应该在用户模型中有一个设计调用。只需在那里添加另一个参数

devise :database_authenticatable, :registerable, :confirmable.......
       ......., :omniauth_providers: [:twitter]
于 2017-09-16T20:38:07.943 回答
0

既然Devise::OmniauthCallbacksController继承自DeviseController,为什么不直接添加你的twitter方法DeviseController呢?

class DeviseController
  def twitter
    raise request.env["omniauth.auth"].to_yaml
  end
end

或者你可以这样做:

class Devise::OmniauthCallbacksController
  def twitter
    raise request.env["omniauth.auth"].to_yaml
  end
end

或者如果你有一个controllers/devise目录,这可能有效:

module Devise
  class OmniauthCallbacksController
    def twitter
      raise request.env["omniauth.auth"].to_yaml
    end
  end
end
于 2017-09-16T17:37:44.160 回答
0

我收到了相同的错误消息,这就是我修复它的方法。我在 OmniauthCallbacksController 文件中定义了一个 Twitter 方法

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
  skip_before_action :verify_authenticity_token

  def sign_in_with(provider_name)
    @user = User.from_omniauth(request.env["omniauth.auth"])
    sign_in_and_redirect @user, :event => :authentication
    set_flash_message(:notice, :success, :kind => provider_name) if is_navigational_format?
  end

  def facebook
    sign_in_with "Facebook"
  end
  def github
    sign_in_with "Github"
  end

  def linkedin
    sign_in_with "LinkedIn"
  end

  def twitter
    sign_in_with "Twitter"
  end

  def google_oauth2
    sign_in_with "Google"
  end

  def developer
    sign_in_with "Developer"
  end
end
于 2019-04-13T12:42:38.867 回答