facebook omniauth faraday-oauth

Error de Facebook de Omniauth-Faraday:: Error:: ConnectionFailed



faraday-oauth (9)

(Para su información: estoy siguiendo el Twitter Omniauth de Railscast # 241. Utilicé Twitter exitosamente, ahora voy a Facebook)

Tan pronto como inicié sesión en Facebook usando Omniauth, recibo este error:

Faraday::Error::ConnectionFailed SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

¿Qué significa esto?

Este es mi código

Rails.application.config.middleware.use OmniAuth::Builder do provider :facebook, ''<key from fb>'', ''<another key from fb>'' end

En realidad, no hay mucho en mi código, todo lo que tengo está en el controlador de sesión que quiero usar en to_yaml para ver qué hay dentro de la solicitud.env

class SessionsController < ApplicationController def create raise request.env["omniauth.auth"].to_yaml end end

¿Cómo resuelvo el error de Faraday?


Echa un vistazo a la gema certified Descripción:

Asegúrese de que net / https usa OpenSSL :: SSL :: VERIFY_PEER para verificar certificados SSL y proporciona paquetes de certificados en caso de que OpenSSL no pueda encontrar uno



He solucionado esto en Mac OS X Lion 10.7.4 con esta solución:

$ rvm remove 1.9.3 (or whatever version of ruby you are using) $ rvm pkg install openssl $ rvm install 1.9.3 --with-openssl-dir=$rvm_path/usr

después de esto, deberá descargar el archivo cacert.pem que falta:

$ cd $rvm_path/usr/ssl $ sudo curl -O http://curl.haxx.se/ca/cacert.pem $ sudo mv cacert.pem cert.pem


La respuesta de Andrei funcionó para mí, sin embargo, me encontré con un gran obstáculo al intentar reinstalar Ruby 1.9.3. Como había instalado una nueva versión de Xcode desde la instalación de 1.9.3, no pude volver a instalarla hasta que abrí las Preferencias de Xcode e instalé las Herramientas de línea de comandos en la pestaña Descargas.


La respuesta de Andrei no funcionó para mí en Mac OSX 10.8.3. He reinstalado openssl para instalar Ruby 2.0 hace un tiempo y desde entonces siempre recibí este error. Lo arreglé gracias a la respuesta e railsapps.github.io/openssl-certificate-verify-failed.html Andrei del railsapps.github.io/openssl-certificate-verify-failed.html .

Corrí:

$ rvm -v $ rvm get head # Installation of latest version of rvm... $ rvm -v # rvm 1.19.5 (master) $ rvm osx-ssl-certs status all # Certificates for /usr/local/etc/openssl/cert.pem: Old. # Certificates for /Users/mpapis/.sm/pkg/versions/openssl/0.9.8x/ssl/cert.pem: Old. $ sudo rvm osx-ssl-certs update all # Updating certificates...

Luego verifiqué si los certificados se actualizaron correctamente ejecutando el estado de rvm osx-ssl-certs status all nuevamente, pero /usr/local/etc/openssl/cert.pem todavía no se actualizó. No sé si fue necesario, pero hice lo siguiente:

$ cd /usr/local/etc/openssl/ $ curl -O http://curl.haxx.se/ca/cacert.pem $ mv cacert.pem cert.pem

Después de eso, el problema se solucionó. Espero que ayude a alguien más que se encuentra con el mismo problema.


Obtiene este error porque Ruby no puede encontrar un certificado raíz en el que confiar.

Corrección para Windows: https://gist.github.com/867550

Solución para Apple / Linux: http://martinottenwaelter.fr/2010/12/ruby19-and-the-ssl-error/ <- Este sitio ya no funciona.

Aquí está la solución de Apple / Linux según el sitio de arriba:

La solución es instalar el puerto curl-ca-bundle que contiene los mismos certificados raíz utilizados por Firefox:

sudo port install curl-ca-bundle

y dile a tu objeto https que lo use:

https.ca_file = ''/opt/local/share/curl/curl-ca-bundle.crt''

Tenga en cuenta que si desea que su código se ejecute en Ubuntu, debe establecer el atributo ca_path en su lugar, con la ubicación de certificados predeterminada / etc / ssl / certs.

Al final, eso es lo que funcionará tanto en Mac OS X como en Ubuntu:

require ''net/https'' https = Net::HTTP.new(''encrypted.google.com'', 443) https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_PEER https.ca_path = ''/etc/ssl/certs'' if File.exists?(''/etc/ssl/certs'') # Ubuntu https.ca_file = ''/opt/local/share/curl/curl-ca-bundle.crt'' if File.exists(''/opt/local/share/curl/curl-ca-bundle.crt'') # Mac OS X https.request_get(''/'')


Para Windows 7: el enlace de la solución anterior de Neil Hoff (Fix para Windows: https://gist.github.com/867550 ) no funcionó para mí.

Esto es lo que funciona:

Usando cmd.exe:

curl -o c:/cacert.pem http://curl.haxx.se/ca/cacert.pem set SSL_CERT_FILE=c:/cacert.pem

usando msysgit bash:

curl -o /c/cacert.pem http://curl.haxx.se/ca/cacert.pem export SSL_CERT_FILE=/c/cacert.pem

Si no tiene curl en su línea de comandos de Windows 7, hágalo aquí: http://www.confusedbycode.com/curl/#downloads

la solución original es de aquí - crédito a: https://github.com/chef/chef-dk/issues/106

Dunn.


esto funcionó para mí (en Mac OS X):

$ brew install curl-ca-bundle $ export SSL_CERT_FILE=/usr/local/opt/curl-ca-bundle/share/ca-bundle.crt