2011-11-12 12 views
2

私は自分のサイトでomniauthとtwitterログインを使用しています。私が持っている唯一の手がかりは、それがSSL errorかもしれないということであるOmniauthサービス利用不可能な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"} 

:私は、ログインしようとするたびしかし、それはこのエラーを与えました。

しかし、エラーの原因をデバッグする方法はわかりません。ここで

は、Twitterのための私の現在の設定です:

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

あなたはomniauthのどのバージョンを使用していますか?最近、v1.0でいくつかの大きな変更があり、この情報が参考になるでしょう。 – Gazler

+0

私はGemfile.lockにomniauth 1.0を使用しています。 – kiba

+0

また、omniauth-twitterの宝石も必要です。 – Gazler

答えて

2

それは私のプロジェクトでのSSLの問題のように見えます。

開発モードでは、sslをオフにできます。そうすれば、この問題なしで作業することができます。

develoment.rbでこれを追加します。

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

とSSL証明書を修正する方法について: Twitter API SSL Root CA Certificate

+0

私はcacert.pemとca-bundle.crt.txtをダウンロードしてアップロードします。これで、OAuth :: Unauthorized(401 Unauthorized)のエラーが表示されました。 – kiba

1

Yahorによってリンクされて、私は解決策は、Twitter devのサポート(でで示唆されていない本当に好きZhuchkou)は、安全でないサーバーから証明書をダウンロードすることを推奨しています。

実際には解決策ではないが、検証ピアの稼動は本番環境で動作します。あなたがする必要があるのは、Twitterの独自の証明書(i:/ C = US/O = VeriSign、Inc./OU=Class 3 Public)を裏付けるVerisignルート証明書などの正しいPEMファイルを指すことですプライマリ認証局 - G2/OU =(C)1998ベリサイン株式会社 - 許可された使用の場合のみ/ OU =ベリサイン・トラスト・ネットワーク):

-----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を使用している場合は、それをここで見つけることがあります。 )

omniauthやルビーopensslの実装がこれを発見されていない理由を知ってはいけない、しかし、あなたが明示的に以下のオプションを使用して、このPEMファイルにリンクすることができます

provider :twitter, 'REDACTED', 'REDACTED', { 
    :client_options => {:ca_file => '/etc/ssl/certs/Verisign_Class_3_Public_Primary_Certification_Authority_-_G2.pem'} 
} 
関連する問題