当我在本地托管时,使用Fb登录工作正常,但我现在遇到的问题是它在heroku上。我已经将与我的应用程序关联的FB上的域从localhost:3000更新到myapp.herokuapp.com
我还检查了这个帖子omniauth with facebook not working on production,并尝试将'client_options'哈希添加到我的初始化文件中,但仍然遇到问题。我不知道这是否相关,但当我尝试导航到/usr/lib/ssl/certs/ca-certificates.crt时,我得到一个“没有这样的文件或目录”错误。
当我点击我的应用程序(http://playedbyme.herokuapp.com/)上的FB登录时,我收到回调错误。
以下是我的OmniAuth初始化程序文件的样子:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'MY_APP_ID', 'MY_SECRET_KEY',
{:client_options => {:ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'}}}
end
更新:我认为这是我的数据库的某种问题。当我运行“heroku run rake db:migrate”时出现错误
rake aborted!
An error has occurred, this and all later migrations canceled:
PG::Error: ERROR: column "id" of relation "parties" already exists
: ALTER TABLE "parties" RENAME COLUMN "party_id" TO "id"
但是,我的缔约方表格中没有名为party_id的列
答案 0 :(得分:0)
您需要确保您的CA证书路径正确无误。您可以通过运行以下命令在heroku服务器上检查:
heroku run bash
然后运行openssl以显示正确的路径:
$ openssl version -a
OpenSSL 1.0.0e 6 Sep 2011
OPENSSLDIR: "/usr/lib/ssl"
您应该在$ OPENSSLDIR / certs / ca-certificates.crt找到ca_certificates.crt文件
确保您还在scope
中config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'YOUR_APP_ID', 'YOUR_SECRET_KEY',
{:scope => 'PERMISSION_1, PERMISSION_2, ETC', :client_options => {:ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'}}}
end
中heroku pg:reset DATABASE --confirm YOUR_APP_NAME
heroku run rake db:setup
heroku restart
heroku open
指定了您的Facebook权限:
{{1}}
还要确保在更改此文件后重新启动rails。
修改强>
要修复数据库问题,您可能需要查看重置数据库并重新创建数据库:
{{1}}