omn iauth-facebook README 提到了如何在初始化程序中设置它,以及如何设置选项,例如scope
每个请求。我想知道是否也可以为每个请求设置应用程序 ID 和应用程序密码。
问问题
2715 次
3 回答
16
你可以这样做:
在您的 omniauth.rb 上,执行以下操作:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook,:setup => true
end
然后在您的控制器上,您必须定义以下内容:
def setup
request.env['omniauth.strategy'].options[:client_id] = @site.facebook_key
request.env['omniauth.strategy'].options[:client_secret] = @site.facebook_secret
render :text => "Setup complete.", :status => 404
end
当然,你必须在你的 routes.rb 中添加相关的路由。
#Facebook Omniauth routes
match '/auth/facebook/callback' => 'session#authorize_callback'
match '/auth/facebook/setup' => 'session#setup'
祝你好运
问候。伊万。
于 2012-11-23T11:34:52.807 回答
5
我使用设计(遵循此 railscast:http: //railscasts.com/episodes/235-devise-and-omniauth-revised ),但我花了一段时间才了解如何实施 Ivangrx 的解决方案。事实证明这很容易。这是我的代码:
# /config/initializers/devise.rb
config.omniauth :facebook, setup: true
# routes.rb
devise_scope :user do
#where omniauth_callback is the controller I made when following the Railscast
get "users/auth/facebook/setup" => "omniauth_callbacks#setup"
end
# omniauth_callbacks_controller.rb
def setup
request.env['omniauth.strategy'].options[:client_id] = @site.facebook_id
request.env['omniauth.strategy'].options[:client_secret] = @site.facebook_key
render :text => "Setup complete.", :status => 404
end
感谢您对此的帮助!
于 2013-05-30T08:00:06.733 回答
1
如果您使用的是设计,您可以这样做
config.omniauth :facebook, :setup => lambda{
current_app_secret = // Get current domain
current_app_key = // Get config
env['omniauth.strategy'].options[:client_id] = current_app_secret
env['omniauth.strategy'].options[:client_secret] = current_app_key
}
于 2012-11-23T09:07:02.587 回答