Ruby on rails omniauth facebook+;无法执行设计回调
我已按照以下说明实施Desive和omniauth facebook: 问题 我的“facebook”回调函数确实会被调用 如果我取消对“facebook”函数的注释,则会发生错误。 路由似乎运行良好 但是,函数中的代码似乎没有被执行 以下代码不会引发任何错误 我已经研究这个问题好几天了。 请帮忙Ruby on rails omniauth facebook+;无法执行设计回调,ruby-on-rails,facebook,devise,omniauth,omniauth-facebook,Ruby On Rails,Facebook,Devise,Omniauth,Omniauth Facebook,我已按照以下说明实施Desive和omniauth facebook: 问题 我的“facebook”回调函数确实会被调用 如果我取消对“facebook”函数的注释,则会发生错误。 路由似乎运行良好 但是,函数中的代码似乎没有被执行 以下代码不会引发任何错误 我已经研究这个问题好几天了。 请帮忙 class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController def facebook
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
raise params.inspect
end
def failure
redirect_to root_path
end
end
版本
devise 4.2.0
omniauth 1.3.1
omniauth-oauth2 1.4.0
omniauth-facebook 4.0.0
rails 5.0.0.1
我使用回调的方式有点不同: 您应该在omniauth.rb文件中声明回调:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, "app_id", "password",
scope: 'public_profile', info_fields: 'id,name,link', display: 'popup', callback_path: '/stores/facebook_callback'
end
当然,在控制器中添加“facebook\u callback”操作(我的案例是存储的),并将其添加到路由文件。可能是其他一些身份验证机制干扰了omniauth流,阻止了执行回调 您可以在应用程序控制器中检查可能导致问题的
before\u action
语句,并将它们作为skip\u before\u action
添加到OmniAuthCallbackController中
例如,如果您有:
class ApplicationController < ActionController::Base
before_action :authenticate_user
...
class ApplicationController
然后添加:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
skip_before_action :authenticate_user
...
class Users::OmniAuthCallbackController
当我遇到同样的问题时,它帮我解决了
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
skip_before_action :authenticate_user
...