2011-11-12 3 views
2

J'utilise omniauth et twitter login pour mon site. Cependant, chaque fois que j'essaie de me connecter, il a donné cette erreur:Omniauth Service indisponible Erreur pour Twitter

Started GET "/auth/failure?message=service_unavailable" for 98.83.218.118 at 2011-11-12 11:27:58 -0500 
    Processing by SessionsController#failure as HTML 
    Parameters: {"message"=>"service_unavailable"} 

Le seul indice que j'ai est que cela pourrait être un SSL error.

Cependant, je n'ai aucune idée sur la façon de déboguer la cause de l'erreur.

Voici ma configuration actuelle pour twitter:

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :twitter, 'REDACTED', 'REDACTED' 
end 
+0

Quelle version de omniauth utilisez-vous? Il y a eu quelques changements majeurs récemment dans v1.0 et cette information serait utile. – Gazler

+0

J'utilise omniauth 1.0 dans mon Gemfile.lock. – kiba

+0

Vous aurez également besoin de la gemme omniauth-twitter alors. – Gazler

Répondre

2

Il ressemble question ssl dans mon projet.

Pour le mode développement, vous pouvez désactiver ssl. Ensuite, vous pouvez travailler sans ce problème.

ajouter ceci develoment.rb:

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 

Et sur la façon dont les certificats SSL fix: Twitter API SSL Root CA Certificate

+0

Je télécharge et télécharge cacert.pem ainsi que ca-bundle.crt.txt. Il m'a maintenant donné l'erreur de OAuth :: Unauthorized (401 Unauthorized). – kiba

1

Je ne suis pas vraiment la solution proposée dans sur Twitter support dev (comme lié par Yahor Zhuchkou), qui suggère de télécharger juste un tas de certificats d'un serveur non sécurisé.

Et tout en tournant de vérifier pair fonctionnera dans la production qui n'est pas vraiment une solution. Ce que vous devez faire est de pointer omniauth vers le fichier PEM correct, qui devrait contenir quelque chose comme, le certificat racine de Verisign qui soutient le propre certificat de Twitter (i:/C = US/O = VeriSign, Inc./OU=Class 3 Public Autorité de certification primaire - G2/OU = (c) 1998 VeriSign, Inc. - Pour une utilisation autorisée uniquement/OU = Réseau VeriSign Trust):

-----BEGIN CERTIFICATE----- 
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcEx 
CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UE 
CxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv 
cml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAt 
IEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBU 
cnVzdCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVow 
gcExCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoG 
A1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1 
dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5j 
LiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2ln 
biBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDM 
XtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXX 
wc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg013gfqLptQ5GV 
j0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQABMA0G 
CSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01U 
bSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i 
F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo 
1KpYoJ2daZH9 
-----END CERTIFICATE----- 

(Si vous utilisez Ubuntu vous pouvez le trouver ici: )

Je ne sais pas pourquoi la mise en œuvre de OpenSSL omniauth ou le rubis ne trouve pas, mais vous pouvez explicitement un lien vers ce fichier pem avec l'option suivante:

provider :twitter, 'REDACTED', 'REDACTED', { 
    :client_options => {:ca_file => '/etc/ssl/certs/Verisign_Class_3_Public_Primary_Certification_Authority_-_G2.pem'} 
} 
Questions connexes