springboot框架 后台获取微信小程序用户的openid

1544年前SpringBoot1459

小程序端app.js中:

// 登录
    wx.login({
      success: res => {        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        if (res.code) {
          wx.request({
            url: 'http://localhost:84/user/login',
            method: 'POST',           
             data: {
              code: res.code
            },            
            header: {
              'content-type': 'application/x-www-form-urlencoded'
            },
            success(res) {
              console.log("openid:"+res.data.openid);             
              if (res.data.openid != "" || res.data.openid!=null){                // 登录成功
                wx.setStorageSync("openid", res.data.openid);//将用户id保存到缓存中
                wx.setStorageSync("session_key", res.data.session_key);//将session_key保存到缓存中
              }else{                // 登录失败
                // TODO 跳转到错误页面,要求用户重试


                return false;
              }
            }
          })
        } else {
          console.log('获取用户登录态失败!' + res.errMsg)
        }
      }
    })


java端:

@RestController
public class LoginController  extends BaseController {
    @Autowired
    private SysUserMapper sysUserMapper;
    @PostMapping("/user/login")
    @ResponseBody
    public String login(@RequestHeader("token") String token,@RequestParam("code") String code){
        String appID = "wx8786*******41b1c";
        String appSecret = "7ab8d23ec**********3070ecf71afcd";
        String loginname = JwtUtil.getUsername(token);

        Map<String,Object> map = new HashMap<String,Object>();
        String result = HttpUtil.get("https://api.weixin.qq.com/sns/jscode2session?appid=" + appID + "&secret="
                        + appSecret + "&js_code=" + code+ "&grant_type=authorization_code"
                ,map);
        ObjectMapper mapper = new ObjectMapper();
        OpenIdJson openIdJson = null;
        try {
            openIdJson = mapper.readValue(result, OpenIdJson.class);
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(result.toString());
        System.out.println(openIdJson.getOpenid());
        SysUser sysUser = new SysUser();
        sysUser.setOpenid(openIdJson.getOpenid());
        sysUser.setLoginName(loginname);
        sysUserMapper.updateUserByUsername(sysUser);
        return result;

    }
}

上面的HttpUtil.get()方法引入了工具包

<!-- 调用Api工具类 -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>4.1.0</version>
</dependency>

OpenIdJson的实体类:

public class OpenIdJson {
    private String openid;
    private String session_key;

    public String getOpenid() {
        return openid;
    }

    public void setOpenid(String openid) {
        this.openid = openid;
    }

    public String getSession_key() {
        return session_key;
    }

    public void setSession_key(String session_key) {
        this.session_key = session_key;
    }
}


相关文章

linux查看进程及杀掉进程

linux查看进程及杀掉进程

查看进程:1、ps 命令用于查看当前正在运行的进程。grep 是搜索例如: ps -ef | grep java表示查看所有进程里 CMD 是 java 的进程信息2、ps -aux | grep j...

hui.js中 scrollX方法 iphone端迟钝,滑动慢或卡问题解决

hui.js中 scrollX方法 iphone端迟钝,滑动慢或卡问题解决

移动端UI中常会使用到图片横向/纵向滚动的效果,但在iPhone端总是会滚动不流畅,有种卡卡的感觉,而安卓设备上却没有这种问题;要解决这个问题很简单:  增加一行CSS样式代码:-webki...

MySQL、Oracle数据库字段分别设置默认系统时间

MySQL设置方法:1、将字段类型设为  TIMESTAMP 2、将默认值设为  CURRENT_TIMESTAMPMySQL 脚本实现用例--添加CreateTime 设置默认时...

dwz+jfinal 市县下拉菜单二级联动(实例)

在DWZ文档中对组合框combox的是这样描述的:在传统的select 用class 定义:class=”combox”, html 扩展:保留原有属性name,  增加了属性:ref。re...

胎停稽留原因:关于免疫问题(二)

二、封闭抗体和夫妻HLA相似点多HLA是人类白细胞抗原,位于人类第6条染色体上,是一个通讯兵的作用,负责识别人体的外来物,一旦发现有外来物有害,就会通知白细胞做好免疫抵抗,将外来物杀死。如果发现不是有...

js解析json对象获取属性名及值(key value值)

不知道json串属性名字的时候,需要获取属性名。直接附代码://基本json串 var jsonObj = {"55":"1",...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。