java springboot微信小程序授权登录
发布于 3 年前 作者 mindu 1394 次浏览 来自 分享

今天给大家分享一个java开发的小程序授权登录实例,希望对大家有帮助

首先我们学习任何东西一定要看官方文档

小程序授权登录业务流程图

功能截图

 前端代码

wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (resUser) => {
        app.register(resUser.userInfo, function(res){
          if(res == 0){
            wx.navigateBack({
              delta: 0,
            })
          }
        })
      },
      fail: function(res){
      }
    })
var that = this;
    wx.login({
      success: function (res) {
        var code = res.code; // 微信登录接口返回的 code 参数,下面注册接口需要用到
        // 下面开始调用注册接口
        wx.request({
          url: that.globalData.domain + '/api/wechat/register',
          data: {
            code: code,
            avatarUrl: userInfo.avatarUrl,
            nickname: userInfo.nickName,
            gender: userInfo.gender
          }, // 设置请求的 参数
          success: (res) => {
            if (res.data.code == 0) {
              wx.hideLoading();
              that.login(callback);
            } else {
              // 登录错误 
              wx.hideLoading();
              wx.showModal({
                title: '提示',
                content: '无法登录,请重试',
                showCancel: false
              })
            }

          }
        })
      }
    })

后端代码

/**
     * 用户注册
     */
    @AuthIgnore
    @GetMapping("register")
    public R register(String avatarUrl, String nickname, String gender, String code) {
		try {
			String openid = this.wxService.getUserService().getSessionInfo(code).getOpenid();
			//查询用户信息
            MemberEntity user = memberService.queryByOpenid(openid);
            if(user != null) {
            	return R.ok();
            }
			//注册
	        MemberEntity member = new MemberEntity();
	        member.setAvatarUrl(avatarUrl);
	        member.setOpenid(openid);
	        member.setNickname(filterUtf8mb4(nickname));
	        member.setGender(gender);
	        member.setCreateTime(new Date());
	        memberService.save(member);
	        return R.ok();
		} catch (WxErrorException e) {
			e.printStackTrace();
			return R.error();
		}
    }
回到顶部