一、获取code

用户进入微信公众号即可获得code,直接通过request.getParameter("code")获得

二、根据code获取openid

还需要微信APPID、SECRET

   /**
     * 通过CODE取得浏览网页用户的OPenID
     *
     * @param code
     * @return
     */
    public static JSONObject getWeixinUserOpenID(String AppID, String
secret,String code) {
        JSONObject jsonObject = null;
        String requestUrl =
"https://api.weixin.qq.com/sns/oauth2/access_token?appid="
                + AppID
                + "&secret="
                + secret
                + "&code="
                + code
                + "&grant_type=authorization_code";
        logger.info("requestUrl==="+requestUrl);
        StringBuffer buffer = new StringBuffer();
        try {
            // 创建SSLContext对象,并使用我们指定的信任管理器初始化
            TrustManager[] tm = { new MyX509TrustManager() };
            SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
            sslContext.init(null, tm, new java.security.SecureRandom());
            // 从上述SSLContext对象中得到SSLSocketFactory对象
            SSLSocketFactory ssf = sslContext.getSocketFactory();

            URL url = new URL(requestUrl);
            HttpsURLConnection httpUrlConn = (HttpsURLConnection)
url.openConnection();
            httpUrlConn.setSSLSocketFactory(ssf);
            httpUrlConn.setDoOutput(true);
            httpUrlConn.setDoInput(true);
            httpUrlConn.setUseCaches(false);
            // 设置请求方式(GET/POST)
            httpUrlConn.setRequestMethod("GET");

            if ("GET".equalsIgnoreCase("GET"))
                httpUrlConn.connect();
            // 将返回的输入流转换成字符串
            InputStream inputStream = httpUrlConn.getInputStream();
            InputStreamReader inputStreamReader = new
InputStreamReader(inputStream, "utf-8");
            BufferedReader bufferedReader = new
BufferedReader(inputStreamReader);

            String str = null;
            while ((str = bufferedReader.readLine()) != null) {
                buffer.append(str);
            }
            bufferedReader.close();
            inputStreamReader.close();
            // 释放资源
            inputStream.close();
            inputStream = null;


            httpUrlConn.disconnect();

             jsonObject = JSONObject.fromObject(buffer.toString());

            String openid =
jsonObject.getString("openid");//openid从解析出的jsonObject中直接获取


            logger.info("buffer.toString()==="+buffer.toString());
            // jsonObject = JSONObject.fromObject(buffer.toString());
        } catch (ConnectException ce) {
            logger.info("Weixin server connection timed out.");
        } catch (Exception e) {
            logger.info("https request error:{}"+ e.getMessage());
        }
        return jsonObject;


    }

  



友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信