omn​​iauth与facebook不与heroku合作

时间:2012-12-10 00:05:59

标签: ruby-on-rails facebook heroku omniauth

当我在本地托管时,使用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的列

1 个答案:

答案 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文件

确保您还在scopeconfig/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}}