Ruby on rails omniauth与facebook不合作制作
我在rails应用程序中使用omniauth,我使用facebook和twitter按钮登录,当我在网站url文件localhost:3000中输入facebook时,一切正常,但当我将网站上载到heroku并将网站url更改为sitename.heroku.com时,twiiter登录按钮起作用,但facebook按钮不起作用…您可能需要向我们提供更多信息(什么意思是facebook按钮不起作用?您是否收到错误消息?如果是,什么?您的日志说明了什么?) 但是,这很有可能是您的问题:在heroku上使用omniauth facebook身份验证存在一个已知问题。您需要在config/initializers/omniauth.rb文件中添加对SSL证书文件的显式引用。更改facebook配置行以包含“客户端选项”散列,如下所示:Ruby on rails omniauth与facebook不合作制作,ruby-on-rails,heroku,omniauth,Ruby On Rails,Heroku,Omniauth,我在rails应用程序中使用omniauth,我使用facebook和twitter按钮登录,当我在网站url文件localhost:3000中输入facebook时,一切正常,但当我将网站上载到heroku并将网站url更改为sitename.heroku.com时,twiiter登录按钮起作用,但facebook按钮不起作用…您可能需要向我们提供更多信息(什么意思是facebook按钮不起作用?您是否收到错误消息?如果是,什么?您的日志说明了什么?) 但是,这很有可能是您的问题:在herok
provider :facebook, 'YOUR_APP_ID', 'YOUR_SECRET_KEY',
{:scope => 'PERMISSION_1, PERMISSION_2, PERMISSION_3...', :client_options => {:ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'}}}
如果要在本地主机上进行测试并保持生产环境正常工作,可以: 1-创建新的Facebook应用程序仅用于开发目的 2-将站点URL字段设置为:
http://localhost:3000/
3-然后编辑/config/initializers/omniauth.rb
文件以匹配以下内容:
OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth::Builder do
if Rails.env.development?
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
provider :facebook, 'DEV_APP_ID', 'DEV_APP_SEVRET'
else
provider :facebook, 'DEPLOY_APP_ID', 'DEPLOY_APP_SECRET'
end
end
最后重新启动
rails服务器
,您应该可以通过新应用程序登录。我猜您已经将Facebook应用程序设置从localhost:3000更改为Heroku站点的实际地址了?您不能对本地测试和公共制作使用相同的设置。我没有使用相同的设置。我已将facebook应用程序设置从localhost:3000更改为heroku Address上的我的应用程序