我正在使用 Devise/OmniAuth 和 Koala 构建 Rails 3 应用程序,但出现以下 SSL 错误:
OpenSSL::SSL::SSLError in Users/omniauth callbacksController#facebook
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
导致此错误的代码是:
@graph = Koala::Facebook::GraphAPI.new(@token)
@friends = @graph.get_connections("me", "friends")
我正在使用带有 OmniAuth 的设计来执行身份验证,这很有效。然后我取回返回的 facebook 令牌,并尝试将其与 Koala 一起使用,如上所示。这就是导致此错误的原因。
可能值得注意的是,我最初收到与 Devise & OmniAuth 相同的错误。关于这个错误有几个主题,我能够通过设置我的 config/initialisers/devise.rb 来解决它,
config.omniauth :facebook, APPID, APPKEY, {:client_options => {:ssl => {:ca_file => "/opt/local/share/curl/curl-ca-bundle.crt"}}}
我猜我需要为 Koala 提供类似的配置,以便它知道在哪里检索本地 ca_file。不过,我在文档中找不到任何有关如何执行此操作的指示。关于如何做到这一点或如何避免一般错误的任何想法?
我的开发环境是 OSX。