【问题标题】:Jumpstart Labs MicroBlogger unable to connectJumpstart Labs 微博无法连接
【发布时间】:2013-11-14 15:56:55
【问题描述】:

我正在关注Jumpstart Labs MicroBlogger tutorial,但遇到了无法连接到 Twitter 的问题。我收到以下错误:

C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/net/http.rb:799:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (Twitter::Error::ClientError)
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/net/http.rb:799:in `block in connect'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/timeout.rb:68:in `timeout'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/net/http.rb:799:in `connect'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/net/http.rb:755:in `do_start'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/net/http.rb:744:in `start'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/net/http.rb:1284:in `request'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/faraday-0.8.8/lib/faraday/adapter/net_http.rb:75:in `perform_request'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/faraday-0.8.8/lib/faraday/adapter/net_http.rb:38:in `call'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/faraday-0.8.8/lib/faraday/response.rb:8:in `call'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/faraday-0.8.8/lib/faraday/response.rb:8:in `call'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/faraday-0.8.8/lib/faraday/response.rb:8:in `call'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/faraday-0.8.8/lib/faraday/request/url_encoded.rb:14:in `call'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/faraday-0.8.8/lib/faraday/request/multipart.rb:13:in `call'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/twitter-4.8.1/lib/twitter/request/multipart_with_file.rb:14:in `call'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/faraday-0.8.8/lib/faraday/connection.rb:253:in `run_request'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/faraday-0.8.8/lib/faraday/connection.rb:118:in `post'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/twitter-4.8.1/lib/twitter/client.rb:108:in `request'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/twitter-4.8.1/lib/twitter/client.rb:72:in `post'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/twitter-4.8.1/lib/twitter/api/utils.rb:82:in `object_from_response'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/twitter-4.8.1/lib/twitter/api/tweets.rb:129:in `update'
    from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/jumpstart_auth-0.3.0/lib/jumpstart_auth.rb:32:in `update'
    from C:/Users/Steve/RubymineProjects/MicroBlogger/micro_blogger.rb:12:in `tweet'
    from C:/Users/Steve/RubymineProjects/MicroBlogger/micro_blogger.rb:18:in `<top (required)>'
    from -e:1:in `load'
    from -e:1:in `<main>'

这是我目前的代码:

require 'jumpstart_auth'

class MicroBlogger
  attr_reader :client

  def initialize
    puts "Initializing"
    @client = JumpstartAuth.twitter
  end

  def tweet(message)
    @client.update(message)
  end

end

blogger = MicroBlogger.new
blogger.tweet("hey")

【问题讨论】:

    标签: ruby twitter twitter-oauth


    【解决方案1】:

    如错误消息中所示,SSL 库无法验证从 Twitter 服务器返回的 SSL 证书。在这种情况下,很可能是因为没有为您安装证书颁发机构。

    详细信息和解决方案可在此处获得:

    https://gist.github.com/fnichol/867550#file-readme-md

    我建议使用“无聊”的方法,因为它不涉及运行从互联网上复制的代码(如果链接消失的说明,但最好阅读链接处的信息):

    • 下载http://curl.haxx.se/ca/cacert.pem
    • 将其保存到 C:\RailsInstaller\cacert.pem 之类的地方
    • 运行set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem设置当前shell的位置
    • 在同一个 shell 中运行您的脚本

    【讨论】:

    • 谢谢贾斯汀,看了你的评论后,我试了一下(我也发现了这个:stackoverflow.com/questions/5720484/…第二个问题)。我按照这些步骤尝试重新启动,但仍然收到相同的错误。感谢您的建议。
    • 重启了什么脚本?你的电脑?设置 SSL_CERT_FILE 仅适用于您当前的 shell。您是否尝试过microsoft.com/resources/documentation/windows/xp/all/proddocs/… 的说明来更永久地设置环境变量?您是从 RubyMine 内部运行程序吗?
    • 这就是我所做的:将curl.haxx.se/ca/cacert.pem 下载到 c:\railsinstaller\cacert.pem 转到您的计算机 -> 高级设置 -> 环境变量 创建一个新的系统变量: 变量:SSL_CERT_FILE 值: C:\RailsInstaller\cacert.pem
    • 而且,是的,我正在 RubyMine 内部运行程序
    • 我认为 RubyMine 可能会妨碍您,这取决于它如何运行您的脚本(我不知道)。尝试使用 Ruby 打开命令行(我假设它在您的菜单中的某个地方?)。检查变量是否设置正确:echo %SSL_CERT_FILE%。然后用 Ruby 运行你的脚本(当然来自C:/Users/Steve/RubymineProjects/MicroBlogger/micro_blogger.rb):ruby micro_blogger.rb
    【解决方案2】:

    如果您已将 ruby​​ 直接安装到 Windows,您可以将 cacert.pem 文件复制到 Ruby200dir(例如 c:\ruby200)并从命令提示符运行set SSL_CERT_FILE=[path to the cert file] 命令。

    请记住,这将要求您在每次启动计算机时添加 SSL 证书

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      相关资源
      最近更新 更多