java微信端html_H5微信网页授权java后端SpringBoot实现
转载请注明出处即可,感谢!本文地址:https://www.cnblogs.com/qupengblog/p/14105369.html
本文使用weixin4j工具包,实现SpringBoot中微信网页授权功能,并获取用户信息。
从微信文档中我们可以发现有以下几个步骤:
在这里我整理了一个最简便的实现方式,请大家参考
首先在pom.xml中引入java工具包:
org.weixin4j.spring.boot
weixin4j-spring-boot-starter
1.0.0
com.github.liyiorg
weixin-popular
2.8.5
在 application.properties 文件中配置公众号 appid 和 Secret:
weixin4j.config.appid=yourappid
weixin4j.config.secret=yoursecret
Controller层需要接受的参数需要以下两个:
code:前端页面授权同意获取的code
url:微信js调用的url,也就是要授权的域名
Service层方法如下(核心):
@Resource
private WeixinTemplate weixinTemplate; //weixin4j工具模板
@Transactional
public Map login(Map param) throws WeixinException {
SnsUser snsUser = weixinTemplate.sns().getSnsUserByCode((String) param.get("code")); //通过code获取access_token信息
String subscribe = weixinTemplate.user().info(snsUser.getOpenid()).getSubscribe();
Map map = new HashMap<>(); //返回值map
String randomStr = UUID.randomUUID().toString().substring(0, 18);
map.put("appId", weixinTemplate.getAppId()); //appid,前端若不需要可忽略
Date date = new Date();
String sign = SignUtil.getSignature(weixinTemplate.getJsApiTicket().getTicket(), randomStr, new Long(date.getTime() / 1000).toString(), (String) param.get("url"));
//-----以下代码根据具体业务处理-----
map.put("subscribe",Integer.parseInt(subscribe)); //用户是否关注公众号 0-否,1-是
//拼装前端需要的返回结果
Map signature_dict = new HashMap<>();
signature_dict.put("nonceStr", randomStr);
signature_dict.put("signature", sign);
signature_dict.put("timestamp", new Long(date.getTime() / 1000));
map.put("signature_dict", signature_dict);
//根据openid查询用户id,以此决定更新还是新增用户信息
WxUsers wxUsers = wxUsersMapper.selectIdByOpenid(snsUser.getOpenid());
if(wxUsers == null){
wxUsers = new WxUsers();
}
wxUsers.setNickName(snsUser.getNickname());
wxUsers.setSex(snsUser.getSex());
wxUsers.setImg(snsUser.getHeadimgurl());
wxUsers.setOpenid(snsUser.getOpenid());
map.put("nickName",wxUsers.getNickName());
map.put("img",wxUsers.getImg());
if (wxUsers.getWxUsersId() == null) {
wxUsersMapper.insert(wxUsers);
map.put("wxUsersId",wxUsers.getWxUsersId());
} else {
map.put("wxUsersId",wxUsers.getWxUsersId());
wxUsersMapper.updateByPrimaryKey(wxUsers);
}
return map;
}
到这里已经授权成功啦,短短几行代码实现了微信文档里麻烦的步骤
如果我的方法解决了大家的问题,希望大家可以点赞支持!希望对大家有所帮助!
转载请注明出处即可
java微信端html_H5微信网页授权java后端SpringBoot实现相关推荐
- 微信公众号开发-网页授权——配置测试账号
思路分析: 1.创建测试账号并且配置测试账号的授权回调域名. 2.由前端发起授权请求,微信收到请求后(若是首次打开,并且未关注公众号,微信会弹出授权页,提示用户授权)将重定向到请求url中配置的red ...
- 微信公众号的网页授权如何在本地调试?
调试微信公众号的网页授权时,要填写网页授权域名(如图1),否则授权的时候会提示redirect_uri参数错误(图2),可是我得在localhost先调试成功才能上传到实际的网站上吧,可是这里不支持l ...
- 微信公众号-测试号-网页授权
微信公众号-测试号-网页授权 自己摸索几天,总算搞清楚了 第一步 登录微信公众号平台,开发者工具菜单进入公众平台测试账号 第二步 设置网页帐号 网页授权获取用户基本信息的域名,测试号是可以用ip和域名 ...
- 连小白都能看懂的微信开发之 微信自定义菜单 + 获取网页授权 + 获取用户信息
微信自定义菜单+获取网页授权+获取用户信息 今天项目需要一个需求,就是添加一个菜单接口,并且还可以获取用于的信息,从而根据用户的信息去做一些业务的查询.通过百度和自己查看文档大致的解决办法如下: 注意 ...
- h5微信页面在手机微信端和微信web开发者工具中都能正常显示,但是在pc端微信浏览器上打不开(显示空白)
记录一个最近在微信端页面开发时出现的问题:页面在手机微信端和微信web开发者工具中都能正常显示,但是在pc端微信浏览器上打不开(显示空白). 原因:pc端微信浏览器不支持es6,而我的代码使用了 le ...
- [微信开发] 微信网页授权Java实现(https://www.cnblogs.com/lovebread/p/5513241.html)
功能:主要用于在用户通过手机端微信访问第三方H5页面时获取用户的身份信息(openId,昵称,头像,所在地等..)可用来实现微信登录.微信账号绑定.用户身份鉴权等功能. 开发前的准备: 1.需要有一个 ...
- Java微信SDK方式进行网页授权
微信Java SDK开发文档(2.0.0)地址:https://github.com/wechat-group/weixin-java-tools/wiki 微信Java SDK使用说明: https ...
- 网页授权前端 java_H5微信网页授权java后端SpringBoot实现
本文使用weixin4j工具包,实现SpringBoot中微信网页授权功能,并获取用户信息. 使用weixin4j工具包1.0.0版本,官网 https://developers.weixin.qq. ...
- 微信企业号之构造网页授权链接
一.相关介绍 在企业微信中,我们可以开发企业应用.使用企业应用,我们可以访问到外部网站.那么外部网站如何获取到企业微信共享用户userid以及用户的相关信息,企业微信提供了OAuth的授权登录方式,可 ...
最新文章
- Redis持久化实践及数据恢复
- 解决大众点评换设备无法用卷(你本次购买不符合活动规则)的问题
- 结合控制台程序和K8S的CronJob完成定时任务
- java集合——数组列表(ArrayList)+散列集(HashSet)
- 来看看这些门户网站的变迁史 - 感受下网络发展的这段过往
- 高效的CSV文本处理利器——univocity-parsers
- Redis performance --- delete 100 records at maximum
- 第二天:继续完善路由层(router)及数据层(controller)
- API卡_医院卡读卡器 IC卡读卡器 USB口写卡器_社保卡读卡器
- centos是什么linux操作系统,CentOS系统是什么
- 【Unity】ET框架学习笔记
- 正则表达式与文件格式处理-Linux(笔记)
- 证券公司信息化7-资产管理业务的沿革。为什么要有资产管理系统?
- MIPI DSI CLK计算
- Java Attach机制
- Manjaro Linux 双显卡安装步骤及独立显卡运行游戏(Nvidia GeForce GTX 980m)
- Flutter 自定义组件实战之Cupertino(iOS)风格的复选框
- 我是一个线程 【转】
- java冒泡排序经典代码(Java冒泡排序)
- 搜狗输入法账户无法同步问题
热门文章
- Magic Data入选亿欧智库2022中国语音交互车端应用产业图谱
- cmi编码实验_实验的CMI码型变换实验的
- matlab已知圆心和半径怎么作圆,matlab根据圆心和半径画圆三种方式
- UNION ALL、左右外连接、全外连接、内连接
- Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
- 批量删除xml+mybatis
- web系统大规模并发中的-秒杀与抢购
- 国内先进混沌工程平台发布在即,同创永益携手「DaoCloud 道客」助力企业数字化转型
- Fix signatures do not match the previously installed version
- mysql中的longblob类型处理