JAVA开发微信绑定功能
JAVA开发微信绑定功能
jingshishengxu 发表于9个月前
JAVA开发微信绑定功能
  • 发表于 9个月前
  • 阅读 34
  • 收藏 1
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: JAVA开发微信绑定功能

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

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

  一、前提准备

  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比较下,就知道微信有没有绑定过了。

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 69
博文 433
码字总数 48610
×
jingshishengxu
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: