文档章节

JAVA开发微信绑定功能

jingshishengxu
 jingshishengxu
发布于 2017/05/13 09:07
字数 674
阅读 59
收藏 1

微信现在在国内的使用度还是非常高的,现在差不多的互联网应用都需要开发微信绑定功能,呃,其实这个功能并不复杂,不过网上的文档的都写得太官方、太繁琐了。

  我自己总结了一下,开发微信绑定功能的全过程。尽量说得清晰、明白,便于理解

  一、前提准备

  1、服务器,包括ip地址:这个我就不说啦,开发互联网应用,没有服务器和IP,额,难道你开发的是纯客户端滴?
  2、域名:开发互联网应用不一定需要域名,不过要绑定微信的话,就一定需要域名了。
  3、80端口:微信绑定必须用80端口,不能用其他端口
  4、微信公众号:申请一个微信公众号,拿到 APPID 和 secret

  二、开发过程

  原理说明:所谓绑定微信,其实就是绑定微信的OPENID,所以需要获取微信用户的openid,然后存到我们数据库里就可以了。获取openid需要获取code,获取code需要appid 和 secret。所以说,绑定微信账户,其实需要两个请求。第一个请求获取用户code,第二个请求获取openid

  开发步骤
  1、登录公众号,自定义菜单,菜单名称随意,登录应用或者登录账户
  2、菜单绑定URL地址:https://open.weixin.qq.com/connect/oauth2/authorize?appid=XXXX&redirect_uri=http://www.fei1314.com/weixin.do&response_type=code&scope=snsapi_base&state=123&connect_redirect=1#wechat_redirect

  说明一下:redirect_uri 是我们的域名请求地址,微信官方文档说这个地址要用https,我本人测试结果是http也可以用,还有一个注意点是redirect_uri 的值需要转码,所以这个值是
  https://open.weixin.qq.com/connect/oauth2/authorize?appid=XXXX&redirect_uri=http%3A%2F%2Fwww.fei1314.com%2Fweixin.do&response_type=code&scope=snsapi_base&state=123&connect_redirect=1#wechat_redirect

  3、java代码,获取code和openid

   public void weixin(){
    String code  = this.getReqParam("code");
    
    StringBuilder sb = new StringBuilder("https://api.weixin.qq.com/sns/oauth2/access_token");
    sb.append("?appid=").append(Const.APPID);
    sb.append("&secret=").append(Const.APPSECRET);
    sb.append("&code=").append(code);
    sb.append("&grant_type=authorization_code");
    
    String accessToken = "0";
    String openid      = "0";
    try {
     URL urlGet = new URL(sb.toString());
     HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();

     http.setRequestMethod("GET"); //必须是get方式请求
     http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
     http.setDoOutput(true);
     http.setDoInput(true);
     System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒
     System.setProperty("sun.net.client.defaultReadTimeout",    "30000");// 读取超时30秒
     http.connect();

     InputStream is = http.getInputStream();
     int size = is.available();
     byte[] jsonBytes = new byte[size];
     is.read(jsonBytes);
     String message = new String(jsonBytes, "UTF-8");
     
     JSONObject demoJson = new JSONObject(message);
     accessToken = demoJson.getString("access_token");
     openid      = demoJson.getString("openid");

    }catch(Exception e){
     e.printStackTrace();
    }
    //保存 openid
      ……
      ……
   }
   
  4、OVER,把获取到的openid保存下来就行了,然后下次请求的时候只要将获取到的openid与数据库里的openid比较下,就知道微信有没有绑定过了。

本文转载自:http://www.fei1314.com/news/892

jingshishengxu
粉丝 72
博文 496
码字总数 52663
作品 0
杭州
部门经理
私信 提问
微信开发 Java SDK - Weixin Java Tools

微信开发 Java 开发工具包(SDK),支持包括微信支付、微信开放平台、小程序、企业号/企业微信、公众号(包括服务号和订阅号)等的后端开发。 本开发工具包基于chanjarster的同名SDK,增加了...

班纳睿
2016/12/22
0
95
weixin-java-tools 1.0.1 发布

发布说明 1. 提供了对微信消息加解密的支持。 项目简介 weixin-java-tools是一个用于开发微信公众号java工具集。 具有以下特性: 不基于Servlet、和其他MVC框架,仅作为工具使用,提供更多的...

jarchan
2014/10/19
1K
0
Java微信开发_00_资源汇总贴

1.微信公众平台技术文档(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432) 2.微信企业号开发接口文档(http://qydev.weixin.qq.com/wiki/index.php?title=%E4%B8%BB%E......

rayner
2017/08/07
0
0
微信第三方平台 access_token is invalid or not latest

微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事. 现在记录一下解决问题的过程,方便后来人参考. 我遇到的这个问题搜索了整个网络也...

自由的开源
2018/08/21
0
2
weixin-java-tools 1.0.3 发布(新增企业号支持)

发布说明 refactor: 将原先公众号功能拆分到了weixin-java-mp中 add: issue #19 添加企业号支持(weixin-java-cp) add: 更新WxConsts,添加了更多菜单按钮类型 项目简介 weixin-java-tools是...

jarchan
2014/10/22
4.6K
10

没有更多内容

加载失败,请刷新页面

加载更多

Java System 类

Java System 类 System 系统类 主要用于获取系统的属性数据。 System类常用的方法: arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 一般 从指定源数...

Hellation
27分钟前
0
0
Nginx源码安装和调优技巧

本文内容 Nginx与apache的对比 实战1:在“腾讯云主机”上源码编译安装Nginx 实战2:Nginx调优之隐藏版本信息防止黑客扫描识别漏洞 实战3:设置网页缓存 实验环境: 使用RHEL6.5/centos6.5 6...

寰宇01
30分钟前
1
0
linux jenkins添加windows节点,实现自动化部署

背景: 要基于jenkins的做代码自动更新部署,现状是jenkins在linux上,目标服务器的tomcat在windows上,如何将代码从linux发送到windows未找到合适方案,并且后续如何远程调用执行windows批处...

shzwork
36分钟前
0
0
MySQL同表更新与查询冲突

MySQL version: 5.5 MySQL报错: You can't specify target table 'document_basic' for update in FROM clause 原因:MySQL不支持对同表同时更新+查询 解决方案:查询结果使用中间表接收,或......

Hzhodor
37分钟前
0
0
最长不重复字符子串

给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 这个有点像最长前缀匹配,简单的想到的就是暴力搜索一下,得到最大的子串,这样就是时间复杂度比较大,可以看到里面有两个f...

woshixin
41分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部