zoukankan      html  css  js  c++  java
  • 微信小程序通过CODE换取session_key和openid

    微信小程序的用户信息获取需要请求微信的服务器,通过小程序提供的API在小程序端获取CODE,然后将CODE传入到我们自己的服务器,用我们的服务器来换取session_key和openid。

    小程序端比较简单,从教程的API部分把代码拷贝到小程序里就好了,这里将提供一个javaweb服务器端换取session_key和openid的代码示例

     1    @Value("${weixin.app_id}") // spring配置文件配置了appID
     2     private String appId;
     3     
     4     @Value("${weixin.app_secret}") // spring配置文件配置了secret
     5     private String secret;
     6     
     7     @RequestMapping("/openId")
     8     @ResponseBody
     9     public Map<String, Object> openId(String code){ // 小程序端获取的CODE
    10         Map<String, Object> result = new HashMap<>();
    11         result.put("code", 0);
    12         try {
    13             boolean check = (StringUtils.isEmpty(code)) ? true : false;
    14             if (check) {
    15                 throw new Exception("参数异常");
    16             }
    17             StringBuilder urlPath = new StringBuilder("https://api.weixin.qq.com/sns/jscode2session"); // 微信提供的API,这里最好也放在配置文件
    18             urlPath.append(String.format("?appid=%s", appId));
    19             urlPath.append(String.format("&secret=%s", secret));
    20             urlPath.append(String.format("&js_code=%s", code));
    21             urlPath.append(String.format("&grant_type=%s", "authorization_code")); // 固定值
    22             String data = HttpUtils.sendHttpRequestPOST(urlPath.toString(), "utf-8", "POST"); // java的网络请求,这里是我自己封装的一个工具包,返回字符串
    23             System.out.println("请求结果:" + data);
    24             String openId = new JSONObject(data).getString("openid");
    25             System.out.println("获得openId: " + openId);
    26             result.put("openId", openId);
    27         } catch (Exception e) {
    28             result.put("code", 1);
    29             result.put("remark", e.getMessage());
    30             e.printStackTrace();
    31         }
    32         return result;
    33     }

    请求以上这个控制器将返回openId,注意data中还有session_key也可以从这里取出来使用,至于JSON的处理方式,根据自己项目中的jar包更改代码即可。

  • 相关阅读:
    java rmi 入门实例
    flex“深拷贝”
    Cygwin 下部署Hadoop
    Hadoop学习原地
    Scribe+HDFS日志收集系统安装方法
    使用HDFS来进行线上应用的文件存储
    转:C++初始化成员列表
    转:为什么数据库选B-tree或B+tree而不是二叉树作为索引结构
    B树、B+树、B*树三者的对比详解
    转载:构造函数不能声明为虚函数,而构造函数可以。为什么?
  • 原文地址:https://www.cnblogs.com/lay2017/p/7273491.html
Copyright © 2011-2022 走看看