maven 依赖

        <!--微信开源封装sdk--><dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-miniapp</artifactId><version>3.6.0</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version><scope>provided</scope></dependency>

code

@Data
public class LoginRequest {//用户登录凭证String code;//原始数据字符串String signature;//校验用户信息字符串String rawData;//加密用户数据String encryptedData;//加密算法的初始向量String iv;
}
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import me.chanjar.weixin.common.error.WxErrorException;/*** @describe: 类描述信息* @author: morningcat.zhang* @date: 2019/12/10 3:48 PM*/
public class WxAppLoginService {public void login(LoginRequest request) throws WxErrorException {final WxMaService wxService = getWxMaService();// 获取微信用户sessionWxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(request.getCode());if (null == session) {throw new RuntimeException("login handler error");}// 解密用户信息WxMaUserInfo wxUserInfo = wxService.getUserService().getUserInfo(session.getSessionKey(),request.getEncryptedData(), request.getIv());if (null == wxUserInfo) {throw new RuntimeException("wxUser not exist");}// 解密手机号码信息WxMaPhoneNumberInfo wxMaPhoneNumberInfo = wxService.getUserService().getPhoneNoInfo(session.getSessionKey(),request.getEncryptedData(), request.getIv());if (Objects.isNull(wxMaPhoneNumberInfo) || StringUtils.isBlank(wxMaPhoneNumberInfo.getPhoneNumber())) {// 解密手机号码信息错误}System.out.printf("============用户登录注册获取微信用户信息===========> openId=%s, username=%s", wxUserInfo.getOpenId(), wxUserInfo.getNickName());String unionId = wxUserInfo.getUnionId();String openId = wxUserInfo.getOpenId();}private WxMaService getWxMaService() {WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();config.setAppid("appId");config.setSecret("appSecret");config.setMsgDataFormat("JSON");WxMaService wxMaService = new WxMaServiceImpl();wxMaService.setWxMaConfig(config);return wxMaService;}
}

实践

请求入参

{"code": "071kqVIk1scL4o0ynUJk1YqEIk1kqVIt","encryptedData": "fPjQvxaAYCKJFP3OTHmwLGgAMm8/MZPlCD/qdRKms1T3rij89kHKfSyrxEh68Ay8occT1wUb4F3Cw7lSPacz5ZHpnRUc3w8EUdz/fezCHDdq+Oh4yc3DzChAa77+28+3eCO0ReeB0yiWkfAiP3iLqic5O1d86ZXJbcpDSZa71EnvGJkNFjhhGJJhoDBC7pd/NW+n21RwTHLAwLoYqo+7aqnJSI+po9+42jRvI7EiEpjtb/LlsKOn4NELU4twGOTB3td1rrQ3BOlSFjqMsmDKiZ/deDPnnus4vaD4agDjUH9LGyqmpeLFfeK8mlSVIGk9wEdz1Wk+G53m8RfvkfZmtwiIHuFbWLmaw4Up1Jtt2kz02+G+5/BcGnPK7D8GSiP5Df0W88HsMofbgTo1yhu3fgKhYVEETNFsoxOzOa8O4QBrSiN7pzezxLhALvzxeNkjTeG4wQHnZm+mEW7LsTwgwGVAus9LWleG8mlSfPqSA8u8IOJacz9DWjehVed13GQX","iv": "hF6Oi870Mgxcdhmnt5EZrA==","rawData": {"nickName": "morningcat2018","gender": 1,"language": "zh_CN","city": "Hangzhou","province": "Zhejiang","country": "China","avatarUrl": "https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTK3EZ1I2fjXnGPBQSiaYSKRebYoawYXaOwbom50KdXicpQ1IRsd7xKp3e7oucb9scMOibk2uTviavpmibg/132"}
}

注意 : code 使用一次后就会失效

使用weixin-java-miniapp实现微信小程序登录接口相关推荐

  1. java微信小程序接口openid过期_Java微信小程序登录接口获取openid

    根据官方文档,wx.login()的回调函数中,需要我们传递生成的用户登录凭证到code2accessToken的接口中 小程序登录方法 code2accessToken的方法中要求传入如下参数 co ...

  2. php与ipa接口登录验证失败,thinkPHP5.0开发微信小程序登录接口signature验证失败

    我用TP5开发微信小程序登录接口的时候,在校验签名signature那遇到了个坑,一直校验失败,找了很久才发现 原因是:tp的input方法会自动转移html字符,比如'"'转成了 & ...

  3. 不带框架的java后端实现微信小程序登录(三层)

    前端参考[PHP做后端实现微信小程序登录](https://blog.csdn.net/weixin_44735933/article/details/106453785) LoginServlet ...

  4. jmeter进行微信小程序登录接口code的获取

    公司新开发小程序功能,部分接口需要进行压测及并发,初次接触小程序,从最开始的登录就卡住了,原因在于登录接口中的code是实时变化的,百度了很久,终于参照这个大佬的文章([案例]用Jmeter做微信小程 ...

  5. ssm框架中前台html如何接受后台的数据_计算机毕业设计中实现java后台的微信小程序...

    点击上方"蓝字",关注我们. 毕业设计做微信小程序+java后台.从对微信小程序一无所知到完成毕设,碰到许多问题,在跟大家分享一下自己的经历和一个小程序怎么从零开始.希望小程序初学 ...

  6. 微信小程序登录Java后台接口

    微信小程序登录java后台接口 首先看一下微信小程序的开发文档: 微信小程序开发文档 步骤: 小程序端向微信接口服务发送请求--wx.login():获取到登录临时凭证code 小程序端拿着获取到的c ...

  7. java版微信小程序登录商城源码Spring Cloud+Redis+MQ+VR全景+b2b2c多商家入驻前后端分离商城源码

    @源码地址来源: https://minglisoft.cn/honghu2/business.html 微信小程序登录代码: /*** Copyright © 2012-2017 <a hre ...

  8. java版微信小程序登录商城源码Spring Cloud+Spring Boot+mybatis+security+uniapp+Redis+MQ+VR全景+b2b2c多商家入驻前后端分离商城源码

    @源码地址来源: https://minglisoft.cn/honghu2/business.html 微信小程序登录代码: /*** Copyright © 2012-2017 <a hre ...

  9. java版微信小程序登录商城源码MQ+VR全景+b2b2c多商家入驻前后端分离商城源码

    @源码地址来源: https://minglisoft.cn/honghu2/business.html 微信小程序登录代码: /*** Copyright © 2012-2017 <a hre ...

最新文章

  1. python关于解决‘\u‘开头的字符串转中文的方法
  2. 执行umount 的时候却提示:device is busy 的处理方法
  3. 安全挑战和SD-WAN解决方案
  4. 你知道几句?Linux之父十大名言
  5. 对atexit函数的理解
  6. 如何搭建一个spring boot项目
  7. python怎么算二元一次方程_我教学生写作业——python解二元一次方程组
  8. 代码审计——你是如何发现那些有缺陷的代码的
  9. css 时间线(timeLine)
  10. 亚马逊云科技与德勤中国同行,创造更智慧、美好的数字化未来
  11. 学习5g通信心得体会_2020世界5G大会最新参观心得体会感悟5篇
  12. el-checkbox点击一个其他的全部都选中了
  13. 我是云南的云南怒江的是什么梗 我是云南的云南怒江的梗出处
  14. Unreal中的Cross Product(向量积)方向定义
  15. 动手| 一个人脸识别的K8s部署实践
  16. c语言证自考免计算机应用,自考证书有哪些?可以免考什么课程?
  17. Live555: RtspServer 示例
  18. 如何修改ftp服务器密码
  19. 在集群是手动启动Ray
  20. 被尘封的故事技能点bug_热血传奇:当年的BUG技能玩法,战士这个技巧,现在还能用!...

热门文章

  1. java IP转换为国家省份城市
  2. 某购票软件破解分析攻略
  3. 【嵌入式Linux】学习路径
  4. Mysql数据库设计
  5. Port Triggering
  6. 6-6 Isleap (5 分)
  7. html自动播放avi视频,使用HTML5 video标签的一系列问题
  8. 【富集分析】GO KEGG
  9. C++中文件开头写的 using namespace std 有什么作用?
  10. java面试题大全2