0

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

4

1 回答 1

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按照omniauth设置在以下位置指定了您的Facebook权限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

还要确保在更改此文件后重新启动 rails。

编辑

要解决您的数据库问题,您可能需要查看重置您的数据库并重新创建它:

heroku pg:reset DATABASE --confirm YOUR_APP_NAME
heroku run rake db:setup
heroku restart
heroku open
于 2012-12-10T00:25:23.567 回答