rails 3 omniauth ошибка SSL - PullRequest
       20

rails 3 omniauth ошибка SSL

0 голосов
/ 18 марта 2012

Я пытаюсь реализовать OmniAuth для Facebook в тандеме с AuthLogic.В настоящее время я получаю следующую ошибку:

SSL_connect возвращено = 1 errno = 0 состояние = SSLv3 чтение сертификата сервера B: сбой проверки сертификата

Я пробовал решение, показанное здесь: Ошибка SSL OmniAuth в Ruby on Rails безуспешно.Я получаю сообщение об ошибке (неопределенная локальная переменная или метод `config ') при попытке запустить мой сервер.Я на машине с Windows, скачал файл cacert.pem и поместил его в папку / config /.

Вот код, который у меня есть в моем файле /initialzers/omniauth.rb:

Rails.application.config.middleware.use OmniAuth::Builder do

require "omniauth-facebook"

if RbConfig::CONFIG["host_os"] =~ /mingw|mswin/
ca_file = File.expand_path Rails.root.join("config", "cacert.pem")

ssl_options = {}
ssl_options[:ca_path] = '/etc/ssl/certs' if Rails.env.staging?
ssl_options[:ca_file] = ca_file

config.omniauth :facebook, "MYAPPID", "MYAPPSECRET", # "APP_ID", "APP_SECRET" your   got from facebook app registration
    :client_options => {:ssl => ssl_options}
else
config.omniauth :facebook, "MYAPPID", "MYAPPSECRET"
end

end

Я также видел сообщения, ссылающиеся на ca-certificate.crt вместо cacert.pem, который изэто он ищет?Я немного растерялся, что попробовать дальше, поэтому любая помощь очень ценится!

Ответы [ 2 ]

2 голосов
/ 18 марта 2012

Ошибка (неопределенная локальная переменная или метод 'config'), которую вы получаете, заключается в том, что в вашем файле не определена переменная 'config'.Пост, из которого вы извлекли его, настраивал devise, в котором есть блок Devise.setup do |config| ... end, так что переменную config можно использовать там.

Избавьтесь от переменной config, чтобы это было что-то вроде этого,

Rails.application.config.middleware.use OmniAuth::Builder do


if RbConfig::CONFIG["host_os"] =~ /mingw|mswin/
  ca_file = File.expand_path Rails.root.join("config", "cacert.pem")

  ssl_options = {}
  ssl_options[:ca_path] = '/etc/ssl/certs' if Rails.env.staging?
  ssl_options[:ca_file] = ca_file

  provider :facebook, "MYAPPID", "MYAPPSECRET", # "APP_ID", "APP_SECRET" your   got from facebook app registration
    :client_options => {:ssl => ssl_options}
else
  provider :facebook, "MYAPPID", "MYAPPSECRET"
end

end
0 голосов
/ 04 августа 2013

Rails.application.config.middleware.use OmniAuth :: Построитель делает провайдера: facebook, FACEBOOK_KEY, FACEBOOK_SECRET, {: client_options => {: ssl => {: ca_path => "/ etc / ssl / certs"}}} end

Это не стандартный способ, но он может помочь вам при настройке разработки, отключив проверку ssl.

if Rails.env.development?OpenSSL :: SSL :: VERIFY_PEER = OpenSSL :: SSL :: VERIFY_NONE end

...