• 获取微信openid和基本信息的总结


    1、一个微信公众号上挂的2个页面,(2个页面域名不同)获得的openid是同一个。

    这里的appid 用的是公众号的appid,这里就认为是一个app。

    如果一个公众号网页,一个小程序, 他的appid是不同的,需要unionid

    2、一个成功获取到基本信息的示例

    前台js

    后台java接口

    1. @RequestMapping(value = "/getUserOpenIdAndUserInfo", method = RequestMethod.POST)
    2. public String getUserOpenIdAndUserInfo(@RequestBody Map param) {
    3. String code=param.get("code");
    4. System.out.println("----------------------- 测试 -微信用户信息code-------------:" + code);
    5. logger.info("leave webAuth {}",code);
    6. // 1 先用code获取到openid和access_token
    7. // https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
    8. JSONObject result = WeixinUtil.getOpenIdByCode(weixinProperties, code);
    9. if (result != null) {
    10. JSONObject responseJson = new JSONObject();
    11. String openId = result.getString("openid");
    12. String accessToken = result.getString("access_token");
    13. responseJson.put("openid", openId);
    14. responseJson.put("scope", result.getString("scope"));
    15. responseJson.put("access_token", accessToken);
    16. logger.info("success webAuth {}", responseJson.toJSONString());
    17. // 通过openId, accessToken获取到用户基本信息,主要是昵称和logo。
    18. // https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
    19. JSONObject joUserInfo = WeixinUtil.getUserInfo2(openId, accessToken);
    20. logger.info("getUserInfo2 userinfo {}", joUserInfo==null?"null":joUserInfo.toJSONString());
    21. System.out.println("getUserInfo2 userinfo "+ joUserInfo==null?"null":joUserInfo.toJSONString());
    22. /* // 更新登录用户的openid
    23. if (userId != null) {
    24. userMapper.updateUserOpenId(userId, openId);
    25. }*/
    26. return "认证成功"+ joUserInfo.toJSONString();
    27. } else {
    28. return "认证失败";
    29. }
    30. }

  • 相关阅读:
    centos7安装mysql5.7
    基于神经网络的自动驾驶,人工智能在无人驾驶
    90.(cesium之家)cesium高度监听事件
    [附源码]计算机毕业设计勤工俭学管理小程序Springboot程序
    城市交通场景分割系统:Web前端可视化
    第2章Linux常用命令(下)
    matplotlib 中使用中文
    IDEA 中配置 Gradle 和使用
    在 C# CLR 中学习 C++ 之了解 namespace
    JMM模型是什么?
  • 原文地址:https://blog.csdn.net/jinsedeme0881/article/details/127834115