<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      java實現微信登錄

      前言

      上一篇做了php的微信登錄,所以也總結一下Java的微信授權登錄并獲取用戶信息這個功能的開發流程。

      配置

      配置什么的就不多說了,詳細的配置可以直接前往我上一篇查看。

      http://www.rzrgm.cn/nothavebug/p/18277732

      流程實現(后端)(JAVA)(springboot)

      1.首先先配置一下application.yml文件

      配置一下微信小程序的Appid 和 appSecret

      2.編寫控制層

      package com.xiangwu.controller.Wx;
      
      import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
      import com.xiangwu.common.exception.BaseException;
      import com.xiangwu.common.exception.BussinessException;
      import com.xiangwu.common.exception.MessageConstant;
      import com.xiangwu.common.interceptor.BaseContext;
      import com.xiangwu.common.interceptor.JwtProperties;
      import com.xiangwu.common.jwt.JwtClaimsConstant;
      import com.xiangwu.common.response.BaseResponse;
      import com.xiangwu.common.utils.JwtUtil;
      import com.xiangwu.entiry.Demand;
      import com.xiangwu.entiry.Member;
      import com.xiangwu.entiry.Member1;
      import com.xiangwu.savedto.MemberDto;
      import com.xiangwu.savedto.UserLoginDto;
      import com.xiangwu.savedto.UserLoginVo;
      import com.xiangwu.service.MemberService;
      import io.swagger.annotations.Api;
      import io.swagger.annotations.ApiOperation;
      import lombok.extern.slf4j.Slf4j;
      import org.springframework.beans.BeanUtils;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.web.bind.annotation.*;
      
      import java.util.Date;
      import java.util.HashMap;
      import java.util.List;
      import java.util.Map;
      
      /**
       * @Author nothavebug
       * @Date 2024/7/2 14:58
       * @PackageName:com.yisen.controller
       * @ClassName: MenberController
       * @Description:
       * @Version 1.0
       */
      @RestController("wxMemberController")
      @RequestMapping("/user")
      @Api(tags = "微信登錄")
      @Slf4j
      public class MemberController {
          @Autowired
          private MemberService memberService;
          @Autowired
          private JwtProperties jwtProperties;
          //C端用戶登錄--微信登錄
          @PostMapping("/user/login")
          @ApiOperation("登錄")
          public BaseResponse<UserLoginVo> login(@RequestBody UserLoginDto userLoginDto) {
              //微信登錄
              Member1 member = memberService.wxLogin(userLoginDto);
              //為微信生成jwt
              Map claims = new HashMap();
              //用戶唯一標識
              claims.put(JwtClaimsConstant.USER_ID, member.getId());
              String token = JwtUtil.createJWT(jwtProperties.getUserSecretKey(), jwtProperties.getUserTtl(), claims);
              //其他處理
      
      
              return new BaseResponse<>(token);
          }
      
      }
      
      

      3.編寫Service層

      package com.xiangwu.service;
      
      import com.baomidou.mybatisplus.extension.service.IService;
      import com.xiangwu.entiry.Member;
      import com.xiangwu.entiry.Member1;
      import com.xiangwu.savedto.UserLoginDto;
      
      /**
       * @Author nothavebug
       * @Date 2024/7/2 14:58
       * @PackageName:com.xiangwu.service
       * @ClassName: MemberService
       * @Description:
       * @Version 1.0
       */
      public interface MemberService extends IService<Member> {
          //微信登錄
          Member1 wxLogin(UserLoginDto userLoginDto);
      }
      
      

      4.編寫Impl

      package com.xiangwu.service.impl;
      
      
      import cn.binarywang.wx.miniapp.api.WxMaService;
      import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
      import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
      import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONObject;
      import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
      import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
      import com.xiangwu.common.exception.LoginFailedException;
      import com.xiangwu.common.interceptor.WeChatProperties;
      import com.xiangwu.common.utils.HttpClientUtil;
      import com.xiangwu.entiry.Demand;
      import com.xiangwu.entiry.Member;
      import com.xiangwu.entiry.Member1;
      import com.xiangwu.mapper.DemandMapper;
      import com.xiangwu.mapper.Member1Mapper;
      import com.xiangwu.mapper.MemberMapper;
      import com.xiangwu.savedto.UserLoginDto;
      import com.xiangwu.service.DemandService;
      import com.xiangwu.service.MemberService;
      import lombok.extern.slf4j.Slf4j;
      import me.chanjar.weixin.common.error.WxErrorException;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.stereotype.Service;
      
      import javax.security.auth.login.LoginException;
      import java.util.Date;
      import java.util.HashMap;
      import java.util.Map;
      
      /**
       * @Author nothavebug
       * @Date 2024/7/2 14:58
       * @PackageName:com.xiangwu.service.impl
       * @ClassName: MemberServiceImpl
       * @Description:
       * @Version 1.0
       */
      @Service
      @Slf4j
      public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> implements MemberService {
          public static final String WX_LOGIN = "https://api.weixin.qq.com/sns/jscode2session";
          @Autowired
          private WxMaService wxMaService;
          @Autowired
          private MemberMapper memberMapper;
          @Autowired
          private WeChatProperties weChatProperties;
          @Autowired
          private Member1Mapper member1Mapper;
          @Override
          public Member1 wxLogin(UserLoginDto userLoginDto) {
              String code = userLoginDto.getCode();
              try {
                  WxMaJscode2SessionResult session = wxMaService.getUserService().getSessionInfo(code);
                  String openid = session.getOpenid();
      
                   // 調用微信 API 獲取用戶的手機號
                  WxMaPhoneNumberInfo phoneInfo = wxMaService.getUserService().getPhoneNoInfo(session.getSessionKey(), userLoginDto.getEncryptedData(), userLoginDto.getIv());
                  String phoneNumber = phoneInfo.getPhoneNumber();
                  if (openid==null){
                      throw new LoginFailedException("登錄失敗");
                  }
                  Member1 member = memberMapper.getBymobile(phoneNumber);
                  if (member ==null){
                      Member1 member1 = new Member1();
                      member1.setOpenid(openid);
                      member1.setAddTime(new Date());
                      member1.setMobile(phoneNumber);
                      member1.setAvatar("http://springboot.itliu.top/wx/images/20220225072654_1.jpg");
                      member1.setMemberType("1");
      
                      member1Mapper.insert(member1);
                  }
                  //  更新openid
                  LambdaUpdateWrapper<Member1> member1LambdaUpdateWrapper = new LambdaUpdateWrapper<>();
                  member1LambdaUpdateWrapper.set(Member1::getOpenid,openid)
                          .eq(Member1::getMobile,phoneNumber);
                  member1Mapper.update(member,member1LambdaUpdateWrapper);
                  return member;
      
              } catch (WxErrorException e) {
                  throw new RuntimeException(e);
              }
      
      
          }
          private String getOpenid(String code){
              //請求參數封裝
              Map map = new HashMap();
              map.put("appid",weChatProperties.getAppid());
              map.put("secret",weChatProperties.getSecret());
              map.put("js_code",code);
              map.put("grant_type","authorization_code");
              //調用工具類,向微信接口服務發送請求
              String json = HttpClientUtil.doGet(WX_LOGIN, map);
              log.info("微信登錄返回結果:{}", json);
              //解析json字符串
              JSONObject jsonObject = JSON.parseObject(json);
              log.info("jsonObject: {}",jsonObject);
              String openid = jsonObject.getString("openid");
              log.info("微信用戶的openid為:{}", openid);
              return openid;
          }
      }
      
      

      流程實現(前端)(Vue)(uniapp)

      前端微信登錄流程實現請移步我上一篇:http://www.rzrgm.cn/nothavebug/p/18277732

      posted @ 2024-07-02 15:04  我恨bug  閱讀(339)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 高潮videossex潮喷| 亚洲偷偷自拍码高清视频| 熟女系列丰满熟妇AV| 国产欧美日韩视频怡春院| 国产人成视频在线观看| 精品国产乱码久久久人妻| 国产精品久久国产精麻豆99网站| 久久99精品久久久久久不卡| 国产精品一区二区三区四区| 丁香婷婷色综合激情五月| 不卡av电影在线| 亚洲午夜伦费影视在线观看| 亚洲男女一区二区三区| 亚洲欧洲精品一区二区| 亚洲另类无码一区二区三区| 少妇xxxxx性开放| 亚洲区中文字幕日韩精品| 欧美人与动牲交A免费观看| 国产精品亚洲一区二区z| 国产精品av中文字幕| 无码av中文一区二区三区桃花岛| 大地资源高清免费观看| 国产一级毛片高清完整视频版| 国产精品高清中文字幕| 日本国产精品第一页久久| 国产盗摄xxxx视频xxxx| 国产在线中文字幕精品| 亚洲香蕉av一区二区蜜桃| 亚洲欧美成人一区二区在线电影 | 熟女系列丰满熟妇AV| 色婷婷av久久久久久久| 99久久亚洲综合精品成人网| 99国精品午夜福利视频不卡99| 无码人妻精品一区二区三区下载| 国产一区二区视频在线看| 芳草地社区在线视频| 精品久久久久久无码不卡| av激情亚洲男人的天堂| 国产人妻人伦精品婷婷| 年日韩激情国产自偷亚洲| 中文国产成人精品久久不卡|