文档章节

JAVA开发微信绑定功能

jingshishengxu
 jingshishengxu
发布于 2017/05/13 09:07
字数 674
阅读 51
收藏 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
粉丝 71
博文 481
码字总数 50663
作品 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
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
weixin-java-tools 1.0.0 发布

weixin-java-tools 1.0.0 正式发布到了maven central仓库,方便有兴趣的开发人员使用。 weixin-java-tools是一个用于开发微信公众号java工具集。 具有以下特性: 不基于Servlet、和其他MVC框...

jarchan
2014/10/15
5.6K
20

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-2

上篇文章(java框架学习日志-1)虽然跟着写了例子,也理解为什么这么写,但是有个疑问,为什么叫控制反转?控制的是什么?反转又是什么? 控制其实就是控制对象的创建。 反转与正转对应,正转...

白话
48分钟前
2
0
Integer使用双等号比较会发生什么

话不多说,根据以下程序运行,打印的结果为什么不同? Integer a = 100;Integer b = 100;System.out.println(a == b);//print : trueInteger a = 200;Integer b = 200;System.out.pr...

兜兜毛毛
昨天
9
0
CockroachDB

百度云上的CockroachDB 云数据库 帮助文档 > 产品文档 > CockroachDB 云数据库 > 产品描述 开源NewSQL – CockroachDB在百度内部的应用与实践 嘉宾演讲视频及PPT回顾:http://suo.im/5bnORh ...

miaojiangmin
昨天
6
0
I2C EEPROM驱动实例分析

上篇分析了Linux Kernel中的I2C驱动框架,本篇举一个具体的I2C设备驱动(eeprom)来对I2C设备驱动有个实际的认识。 s3c24xx系列集成了一个基于I2C的eeprom设备at24cxx系列。at24cxx系列芯片包...

yepanl
昨天
6
0
设计模式之工厂模式

本篇博文主要翻译这篇文章: https://www.journaldev.com/1392/factory-design-pattern-in-java 由于翻译水平有限,自认为许多地方翻译不恰当,欢迎各位给出宝贵的建议,建议大家去阅读原文。...

firepation
昨天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部