Rails 之微信开发 : OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

微信公众平台,使用Ruby On Rails + Win7

在取得OpenID时,如果简单的使用http.get方法,会出现如下

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

解决方案:

def get_open_id code
    url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=xxx&secret=xxx&code=#{code}&grant_type=authorization_code"
   
    uri = URI.parse(url)
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    request = Net::HTTP::Post.new("/sns/oauth2/access_token?appid=xx&secret=xxx=#{code}&grant_type=authorization_code")
    request.add_field(‘Content-Type‘, ‘application/json‘)
    #request.body = post_data.to_json
    response = http.request(request)
    json = JSON.parse(response.body)
    return json
  end

二, 在生成二维码的时候,取得ticket时,如果简单的使用post_form方法,会出现如下

{"errcode":40052,"errmsg":"invalid action name"}

原因大致就是微信服务器收到的JSON格式不合法,不知道post_form提交的最终数据是怎么样的。

变通的方法是自己写post方法,稍微麻烦一些

uri = URI.parse("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=#{access_token}")
post_data = {"expire_seconds" => 1800, "action_name" => "QR_SCENE", "action_info" => {"scene" => {"scene_id" => 123}}}

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new("/cgi-bin/qrcode/create?access_token=#{access_token}")
request.add_field(‘Content-Type‘, ‘application/json‘)
request.body = post_data.to_json
response = http.request(request)
json = JSON.parse(response.body)
时间: 2024-10-06 02:10:35

Rails 之微信开发 : OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed的相关文章

in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

最近在用ruby的一些库的时候,总是出现这个错误. 在使用net/imap库的时候,或者net/http库(主要是用到了https,https是用了ssl) 的时候,具体如下: 错误提示:E:/Ruby200/lib/ruby/2.0.0/net/imap.rb:1454:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (Op

Ruby SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B:

最近使用ruby-china的源连接不上 使用gem update遇到这个问题, 原来是ruby没有包含SSL证书,所以Https的链接被服务器拒绝. 解决方法很简单,首先在这里下载证书(http://curl.haxx.se/ca/cacert.pem), 然后再环境变量里设置SSL_CERT_FILE这个环境变量,并把value指向这个文件 就解决了 http://blog.csdn.net/leorowe/article/details/41968349

使用github oauth 出现 OpenSSL::SSL::SSLError - SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 解决

A top level initializer is highly recommended to use: conf/initializer/tls_settings.rb OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ssl_version] = 'TLSv1_2'

Java企业微信开发_03_通讯录同步

一.本节要点 1.获取通讯录密钥 获取方式: 登录企业微信—>管理工具—>通讯录同步助手—>开启“API接口同步”  ; 开启后,即可看到通讯录密钥,也可设置通讯录API的权限:读取或者编辑通讯录. 获取通讯录密钥的目的: 通过企业ID(CorpId)和 通讯录密钥可以获取通讯录相关接口的使用凭证(AccessToken).有了AccessToken,就可以使用通讯录相关接口了. 凭证的获取方式有两种(此处暂时存疑,以待勘误): 通讯录AccessToken:CorpId+通讯录密钥 其

微信开发python+django两个月的成功经历,django是个好框架!

时间:大三 上学期没有用微信内置浏览器而纯对话开发,坑了自己好一下. 下学期选错bottle框架,以为轻量好,谁知开发中什么都自己来很痛苦. 选对了框架django,终于在大三最后的个把月里写出了里程碑式的现在这个微信端,自己都感动到,作为我大三一年web开发的终结吧. 亮点1:自带后台管理 亮点2:后台权限管理 亮点3:微信回复规则设置去代码化,图形界面. 亮点4:一平台多网店 技巧:微信规则不匹配时不能回复吗?不是,规则包含空字符总能匹配任意文本,请看下面的微信规则截图. 后台 选择botl

Java企业微信开发_07_素材管理之上传本地临时素材文件

一.本节要点 1.临时素材有效期 media_id是可复用的,同一个media_id可用于消息的多次发送(3天内有效) 2.上传文件时的http请求里都有啥 具体原理可参看: 为什么上传文件的表单需要设置enctype="multipart/form-data" (http://blog.csdn.net/mazhibinit/article/details/49667511) 3.上传本地临时素材到微信服务器的流程 (1)建立与微信服务器的网络连接 (2)从连接中获取输出流(写入微信

微信开发__入门

0.作者前言 本文针对人群是有一定开发基础的人员,可以比较快的帮助你了解和学习微信开发. 其次是本文作者本次书写,全部采用的是个人的订阅号,假如是正常的开发流程,可能会存在不同,请读者注意. 本文代码部分主要提供的是关键代码,非关键代码因人而异,需要读者自行补充,请注意. 今天文章下面对一些方法进行了封装,虽然在公司里面,这些都是由后台来对这些任务完成,但是身为一个有理想,有抱负的前端,我们会肯定是有必要的,对吧.而且微信开发很多时候,也是直接由前端来开发完成的. 最后,如果喜欢本文,请关注我呦

java微信开发API解析(五)-用户管理

java微信开发API解析(五)-用户管理 全局说明 * 详细说明请参考前两篇文章. 本文说明 *本文分为五部分: * 工具类MyHttpUtils的封装 * 用户分组管理文档的简单阅读解析 * 分组bean的构建以及各种分组管理的实现源码 * 用户管理的应用场景 * 测试的微信号二维码 * 本文只分析用户管理的用户分组管理部分,其它都大同小异,不再分析处理.如需要,请留言. * 以后原理分析会越来越简洁,具体原理分析请查看以前文章. * 下一篇文章会对于用户普通消息.自定义菜单消息.自动完成用

微信开发学习总结(二)——微信开发入门

上一篇<微信开发学习总结(一)——微信开发环境搭建>我们已经完成了微信开发的准备工作,准备工作完成之后,就要开始步入正题了. 一.微信公众平台的基本原理 在开始做之前,先简单介绍了微信公众平台的基本原理. 微信服务器就相当于一个转发服务器,终端(手机.Pad等)发起请求至微信服务器,微信服务器然后将请求转发给我们的应用服务器.应用服务器处理完毕后,将响应数据回发给微信服务器,微信服务器再将具体响应信息回复到微信App终端. 通信协议为:HTTP 数据传输格式为:XML 具体的流程如下图所示: