Сервис Omniauth недоступен для Twitter - PullRequest
2 голосов
/ 13 ноября 2011

Я использую omniauth и твиттер-логин для своего сайта.Однако всякий раз, когда я пытаюсь войти в систему, он выдает эту ошибку:

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"}

Единственное, что я имею в виду, это то, что это может быть Ошибка SSL .

Я понятия не имею, как отладить причину ошибки.

Вот моя текущая конфигурация для твиттера:

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

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

Похоже, проблема ssl в моем проекте.

Для режима разработки вы можете отключить ssl.Тогда вы можете работать без этой проблемы.

добавьте это в develoment.rb:

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

И о том, как исправить SSL-сертификаты: Twitter API SSL-сертификат корневого CA

1 голос
/ 14 декабря 2011

Мне не очень нравится решение, предложенное в твиттере поддержки dev (по словам Яхора Жучкоу), которое предлагает загрузить только несколько сертификатов с незащищенного сервера.

И пока проверка на одноранговый узел будет работать, это не является решением. Вам нужно указать omniauth на правильный файл PEM, который должен содержать что-то вроде корневого сертификата Verisign, который поддерживает собственный сертификат Twitter (i: / C = US / O = VeriSign, Inc./OU=Class 3 Public Основной центр сертификации - G2 / OU = (c) 1998 VeriSign, Inc. - Только для авторизованного использования / OU = VeriSign Trust Network):

-----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-----

(Если вы используете Ubuntu, вы можете найти его здесь: /etc/ssl/certs/Verisign_Class_3_Public_Primary_Certification_Authority_-_G2.pem)

Не знаю, почему реализация omniauth или ruby ​​openssl не находит этого, но вы можете явно ссылаться на этот файл pem с помощью следующей опции:

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