Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails omniauth与facebook不合作制作_Ruby On Rails_Heroku_Omniauth - Fatal编程技术网

Ruby on rails omniauth与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

我在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配置行以包含“客户端选项”散列,如下所示:

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上的我的应用程序