转载请注明出处即可,感谢!本文地址: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. 微信公众号开发-网页授权——配置测试账号

    思路分析: 1.创建测试账号并且配置测试账号的授权回调域名. 2.由前端发起授权请求,微信收到请求后(若是首次打开,并且未关注公众号,微信会弹出授权页,提示用户授权)将重定向到请求url中配置的red ...

  2. 微信公众号的网页授权如何在本地调试?

    调试微信公众号的网页授权时,要填写网页授权域名(如图1),否则授权的时候会提示redirect_uri参数错误(图2),可是我得在localhost先调试成功才能上传到实际的网站上吧,可是这里不支持l ...

  3. 微信公众号-测试号-网页授权

    微信公众号-测试号-网页授权 自己摸索几天,总算搞清楚了 第一步 登录微信公众号平台,开发者工具菜单进入公众平台测试账号 第二步 设置网页帐号 网页授权获取用户基本信息的域名,测试号是可以用ip和域名 ...

  4. 连小白都能看懂的微信开发之 微信自定义菜单 + 获取网页授权 + 获取用户信息

    微信自定义菜单+获取网页授权+获取用户信息 今天项目需要一个需求,就是添加一个菜单接口,并且还可以获取用于的信息,从而根据用户的信息去做一些业务的查询.通过百度和自己查看文档大致的解决办法如下: 注意 ...

  5. h5微信页面在手机微信端和微信web开发者工具中都能正常显示,但是在pc端微信浏览器上打不开(显示空白)

    记录一个最近在微信端页面开发时出现的问题:页面在手机微信端和微信web开发者工具中都能正常显示,但是在pc端微信浏览器上打不开(显示空白). 原因:pc端微信浏览器不支持es6,而我的代码使用了 le ...

  6. [微信开发] 微信网页授权Java实现(https://www.cnblogs.com/lovebread/p/5513241.html)

    功能:主要用于在用户通过手机端微信访问第三方H5页面时获取用户的身份信息(openId,昵称,头像,所在地等..)可用来实现微信登录.微信账号绑定.用户身份鉴权等功能. 开发前的准备: 1.需要有一个 ...

  7. Java微信SDK方式进行网页授权

    微信Java SDK开发文档(2.0.0)地址:https://github.com/wechat-group/weixin-java-tools/wiki 微信Java SDK使用说明: https ...

  8. 网页授权前端 java_H5微信网页授权java后端SpringBoot实现

    本文使用weixin4j工具包,实现SpringBoot中微信网页授权功能,并获取用户信息. 使用weixin4j工具包1.0.0版本,官网 https://developers.weixin.qq. ...

  9. 微信企业号之构造网页授权链接

    一.相关介绍 在企业微信中,我们可以开发企业应用.使用企业应用,我们可以访问到外部网站.那么外部网站如何获取到企业微信共享用户userid以及用户的相关信息,企业微信提供了OAuth的授权登录方式,可 ...

最新文章

  1. 关于行号输出的简单命令
  2. django模板过滤器
  3. python教程:读取.dcm文件,并转化为.jpg格式
  4. JAVA进阶开发之(二维数组)
  5. python django开发工具_利用pyCharm编辑器创建Django项目开发环境-python开发工具第一篇...
  6. oracle 11g12c(pdbcdb)系统巡检
  7. SharePoint2007安装图文详解四:安装.NET Framework 3.0和SharePoint 2007
  8. 智能公交监控调度系统技术方案,等车不再等到心碎
  9. java打包apk_APK打包流程
  10. c语言求最小公约数和最小公倍数,c语言求最大公约数和最小公倍数
  11. 手机b站封面提取网站_【软件分享】B站视频提取器
  12. absolute位置用法html,html/css中相对定位relative和绝对定位absolute的用法
  13. Qt qss 九宫格
  14. 史上最长的介绍BI(商业智能)的干货
  15. 强化学习入门笔记 | UCL silver RL | UC Berkely cs285 DRL
  16. 54个提高PHP程序运行效率的方法(转载)
  17. 少儿编程Scratch学习教程--Scratch介绍及参赛相关
  18. php mql获取结果集,mql查询删除更新嵌入求指导php
  19. 关于Cannot resolve xxx的解决办法
  20. php上传 找不到临时文件夹(解决方法)

热门文章

  1. 损失函数 | BCE Loss(Binary CrossEntropy Loss)
  2. coins feast 题解_feast翻译与例句_feast在线查词、解释、发音、同义词、反义词_好好学_haohaoxue.com...
  3. 防腐材料生产销售类织梦网站模板
  4. ecshop网店系统怎么制作优惠券?
  5. 再见,迪拜以太坊。你好,精彩片段。
  6. Grafana数据可视化
  7. C/C++程序的断点调试 - Visual Studio Code
  8. 双引号转议的问题,替换双引号为转义双引号
  9. 组合逻辑竞争冒险,时序逻辑亚稳态【0型冒险】【1型冒险】【消除方法】【数字IC笔试】【数字电路】
  10. python输出结果换行_python怎么用一个print换行输出多个变量