TwitterのOmniauthサービス利用不可能なエラー

私は自分のサイトに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"}

私が持っている唯一の手掛かりは、 SSLエラーかもしれないということです。

しかし、私はエラーの原因をデバッグする方法については考えていません。

ここにtwitterの現在の設定があります:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, 'REDACTED', 'REDACTED'
end
2
あなたはomniauthのどのバージョンを使用していますか?最近、v1.0でいくつかの大きな変更があり、この情報が参考になるでしょう。
追加された 著者 Gazler,
あなたはまたomniauth-twitter宝石が必要になります。
追加された 著者 Gazler,
私はGemfile.lockにomniauth 1.0を使用しています。
追加された 著者 kiba,
私はすでにそれを持っています。
追加された 著者 kiba,

2 答え

私のプロジェクトではsslのように見えます。

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

これをdeveloment.rbに追加してください:

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

And about how fix SSL certificates: Twitter API SSL Root CA Certificate

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

私は本当に安全でないサーバーから証明書の束だけをダウンロードすることを示唆しているtwitter開発サポート(Yahor Zhuchkouによってリンクされている)で提案された解決策が嫌いです。

また、実際には解決策ではないが、検証ピアの稼働は生産でも機能します。あなたがする必要があるのは、Twitterの独自の証明書(i:/ C = US/O = VeriSign、Inc./OU=Class 3 Public)を裏付けるVerisignルート証明書などの正しいPEMファイルを指すことです一次認証局 - G2/OU =(c)1998 VeriSign、Inc. - 認証された使用のみ/ OU = VeriSignトラストネットワーク):

-----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 )を参照してください。

omn​​iauthまたはruby openssl実装がこれを見つけられない理由を知らないが、次のオプションを使用してこのpemファイルに明示的にリンクすることができます:

provider :twitter, 'REDACTED', 'REDACTED', {
  :client_options => {:ca_file => '/etc/ssl/certs/Verisign_Class_3_Public_Primary_Certification_Authority_-_G2.pem'}
}
1
追加された