zoukankan      html  css  js  c++  java
  • 微信小程序之java服务端获取openid

    微信小程序越来越热,最近团队写了一个小程序,这篇博客我将讲一下怎么通过java服务端获取到用户的openid。

    api文档的授权登陆地址:

    http://developers.weixin.qq.com/miniprogram/dev/api/api-login.html

    首先我们看下小程序官方的api文档的一张图:

      

    我把我们服务端的部分用红框框起来了。

    图的意思就是前台小程序通过wx.login()这个接口获取了一个code。

    前台把code连同appid和secret请求发给服务端,服务端接收后通过访问微信接口服务从而获取到openid和session_key。

    我们继续看:

    从图看出,接口地址即为上面说的服务端访问地址。

    请求的参数有四个。

    appid和secret开发者可以通过微信公众平台->设置->开发设置,从而找出appid和secret。

    js_code就是上面说的前台通过调用wx.login()获得一个code。

    grant_type默认为authorization_code。

    访问后接口地址将返回json字符串,里面携带着openid和seesion_key。

    下面通过代码来演示:
    写一个访问工具类:

    package utils;

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;

    public class getOpenIdutil {

    public String getopenid(String appid,String code,String secret) {
    BufferedReader in = null;
    //appid和secret是开发者分别是小程序ID和小程序密钥,开发者通过微信公众平台-》设置-》开发设置就可以直接获取,
    String url="https://api.weixin.qq.com/sns/jscode2session?appid="
    +appid+"&secret="+secret+"&js_code="+code+"&grant_type=authorization_code";
    try {
    URL weChatUrl = new URL(url);
    // 打开和URL之间的连接
    URLConnection connection = weChatUrl.openConnection();
    // 设置通用的请求属性
    connection.setConnectTimeout(5000);
    connection.setReadTimeout(5000);
    // 建立实际的连接
    connection.connect();
    // 定义 BufferedReader输入流来读取URL的响应
    in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    StringBuffer sb = new StringBuffer();
    String line;
    while ((line = in.readLine()) != null) {
    sb.append(line);
    }
    return sb.toString();
    } catch (Exception 1) {
    throw new RuntimeException(e1);
    }
    // 使用finally块来关闭输入流
    finally {
    try {
    if (in != null) {
    in.close();
    }
    } catch (Exception e2) {
    e2.printStackTrace();
    }
    }
    }
    }
    前台发送请求,携带着appid、secret和code,服务端调用我写的这个工具类传入三个参数,我采用了拼接的方法把传过来的三个参数连同grant_type拼接成一段url。

    调用java.net.url->new一个url->调java.net.URLConnection打开连接发送参数->读取相应->获取json字符串返回。

    调用代码,返回json字符串,用导JSONObject包,解析json串:

    getOpenIdutil getopenid=new getOpenIdutil();
    //调用访问微信服务器工具方法,传入三个参数获取带有openid、session_key的json字符串
    String jsonId=getopenid.getopenid(appid,code,secret);
    JSONObject jsonObject = JSONObject.fromObject(jsonId);
    //从json字符串获取openid和session_key
    String openid=jsonObject.getString("openid");
    String session_key=jsonObject.getString("session_key");
    至此,已获取到openid。
     

  • 相关阅读:
    120.三角形最短路径(leetcode)
    Python Pycharm中灵活运用debugger
    POJ 1284
    POJ 2407
    POJ 1811
    HDU 1164
    HDU 4228
    HDU 2521
    HDU 4133
    ZOJ 2562 反素数
  • 原文地址:https://www.cnblogs.com/yelanggu/p/12938503.html
Copyright © 2011-2022 走看看