文档章节

JAVA开发微信绑定功能

jingshishengxu
 jingshishengxu
发布于 2017/05/13 09:07
字数 674
阅读 45
收藏 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
博文 478
码字总数 50405
作品 0
杭州
部门经理
微信开发 Java SDK - Weixin Java Tools

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

班纳睿
2016/12/22
0
95
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
sharding-jdbc源码解析全集

本文转自“天河聊技术”微信公众号 sharding-jdbc源码解析之词法解析 sharding源码解析之api分析 sharding-jdbc源码解析之spring集成 sharding-jdbc源码解析之spring集成分片构造实现 shardi...

天河2018
05/03
0
0
微信第三方平台 access_token is invalid or not latest

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

自由的开源
08/21
0
2
Java 11 快要来了,编译 & 运行一个命令搞定!

Java 11 马上要来了,原定于 9 月发布,还有不到 3 个月了,敬请期待更多新功能被加入到 11 当中,本文本讲的是 这个新特性。 化繁为简,一个命令编译运行源代码 看下面的代码。 在我们的认知...

Java技术栈
06/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

科学利用谷歌云平台

当今既是大数据时代,也是云计算时代。云平台构建已经成了诸多大数据平台建设第一步。于是各家互联网巨头们纷纷都开启了云平台服务。国内的以阿里云、腾讯云、百度云、华为云为首,国外的有A...

胖胖雕
11分钟前
0
0
公众号关联小程序发送关联通知

公众号关联小程序发送关联通知,对于推广小程序有着很大的帮助。所以问题来了,怎么做到在公众号关联小程序发送关联通知呢? 一:开发中遇到的问题 之前在开发过程中发现,公众号已经关联小程...

Code辉
14分钟前
0
0
并发编程基础之JMM学习摘要

一、JMM定义 Java内存模型即Java Memory Model(JMM),JMM决定一个线程对共享变量的写入何时对另一个线程可见(内存可见性),从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程...

狠一点
18分钟前
0
0
mysql 开启日志记录并且解决日志时间错误问题

查看日志开启状态 SHOW VARIABLES LIKE 'general%'; 开启日志 SET GLOBAL general_log = 'ON'; 本人mysql版本5.7 在查询日志的时候发现时间和系统时间不对 查看系统默认时间参数 SELECT @@l...

Marhal
21分钟前
0
0
Kubernetes上的负载均衡详解

如果您的应用程序是面向大量用户、会吸引大量流量,那么一个不变的目标一定是在高效满足用户需求的同时、不让用户感知到任何类似于“服务器繁忙!”的情况。这一诉求的典型解决方案是横向扩展...

RancherLabs
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部