java 实现微信授权登陆
附官方文档地址:小程序登陆 | 微信开放文档
编码前准备工作:开发之前我们需要准备两个东西AppID和AppSecret,需要到微信开放平台(https://open.weixin.qq.com)注册开发者账号,并在移动应用中将我们的APP创建进去,填写对应资料后提交审核
准备工作做好后我们开始实现,我们项目用的是springBoot+mybatis框架进行的接口开发
1.第一步是由app端调起微信授权登录页面让用户进行授权操作,用户确认授权后会返回一个code,这个code就是我们后面获取授权用户信息的关键
2.拿着第一步获得的code去获取用户信息并进行登录操作,代码如下
接收微信返回参数的实体类:
package com.xk.hmo.dto.login;import lombok.Data;@Data
public class WxLoginInfo {private String openid;//用户唯一标识private String session_key;//会话密匙private String unionid;//用户在开放平台的唯一标识符,在满足 UnionID 下发条件的情况下会返回private Integer errcode;private String errmsg;}
appId 和 appSecret:
package com.xk.hmo.service.mobile.config;/*** 小程序微信登陆配置文件* @author zhangt*/
public class WxConstant {//小程序appidpublic static final String appid = "xxxxxxxxxxxxxxxx";//小程序密匙public static final String secret = "xxxxxxxxxxxxxxxxxxxxxxxx";
}
pom文件引入:
<dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version>
</dependency>
FastJsonUtil:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.JSONLibDataFormatSerializer;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.xml.crypto.dsig.keyinfo.KeyValue;public class FastJsonUtil {private static final SerializeConfig config = new SerializeConfig();private static final SerializerFeature[] features;private FastJsonUtil() {throw new AssertionError();}public static String toJSONString(Object obj) {return JSON.toJSONString(obj, config, features);}public static String toJSONNoFeatures(Object obj) {return JSON.toJSONString(obj, config, new SerializerFeature[0]);}public static Object toBean(String str) {return JSON.parse(str);}public static <T> T toBean(String str, Class<T> clazz) {return JSON.parseObject(str, clazz);}public static <T> Object[] toArray(String str) {return toArray(str, (Class)null);}public static <T> Object[] toArray(String str, Class<T> clazz) {return JSON.parseArray(str, clazz).toArray();}public static <T> List<T> toList(String str, Class<T> clazz) {return JSON.parseArray(str, clazz);}public static Object beanToJson(KeyValue keyvalue) {String textJson = JSON.toJSONString(keyvalue);Object objectJson = JSON.parse(textJson);return objectJson;}public static Object strToJson(String str) {Object objectJson = JSON.parse(str);return objectJson;}public static Map stringToCollect(String str) {Map m = JSONObject.parseObject(str);return m;}public static String collectToString(Map map) {String str = JSONObject.toJSONString(map);return str;}static {config.put(Date.class, new JSONLibDataFormatSerializer());config.put(java.sql.Date.class, new JSONLibDataFormatSerializer());features = new SerializerFeature[]{SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullNumberAsZero, SerializerFeature.WriteNullBooleanAsFalse, SerializerFeature.WriteNullStringAsEmpty};}
}
/*** 微信授权登陆** @param code* @throws IOException*/@PostMapping("/wxLogin")@ResponseBodyprotected ResultPO wxLogin(@RequestParam String code) {HttpClient httpclient = new HttpClient();GetMethod get = new GetMethod("https://api.weixin.qq.com/sns/jscode2session?appid="+ WxConstant.appid +"&secret="+WxConstant.secret +"&js_code="+ code +"&grant_type=authorization_code");String info ="";try {httpclient.executeMethod(get);info = new String(get.getResponseBody(), "utf-8");}catch (Exception e){//抛出异常 微信授权失败,请稍后再试throw new HMOException(CommonErrorCode.E100035);}log.error(info);WxLoginInfo wxLoginInfo = FastJsonUtil.toBean(info, WxLoginInfo.class);ResultPO success = ResultPO.success();if (wxLoginInfo.getErrcode() != null){success.setErrorMsg(wxLoginInfo.getErrcode().toString(), wxLoginInfo.getErrmsg());}else{success.setData(wxLoginInfo);//成功获取到授权,根据个人业务需求写就可以了。。。}return success;}
java 实现微信授权登陆相关推荐
- 微信授权登陆接入第三方App(步骤总结)Android。
这几天开发要用到微信授权的功能,所以就研究了一下.可是微信开放平台接入指南里有几个地方写的不清不楚.在此总结一下,以便需要的人. 很多微信公众平台的应用如果移植到app上的话就需要微信授权登陆了. 目 ...
- 微信授权登陆【yixiyun】
1,引入相关依赖(主要是最后一个) <dependency><groupId>com.github.binarywang</groupId><artifact ...
- 微信授权登陆接入第三方App(步骤总结)Android
微信授权登陆接入第三方App(步骤总结) 这几天开发要用到微信授权的功能,所以就研究了一下.可是微信开放平台接入指南里有几个地方写的不清不楚.在此总结一下,以便需要的人. 很多微信公众平台的应用如果移 ...
- 微信授权登陆介入第三方APP
这几天开发要用到微信授权的功能,所以就研究了一下.可是微信开放平台接入指南里有几个地方写的不清不楚.在此总结一下,以便需要的人. 很多微信公众平台的应用如果移植到app上的话就需要微信授权登陆了. 目 ...
- Java版本微信授权登录(测试版)
这篇文章是对微信授权登录的一个测试版本,并不能直接在生产上使用,对于在生产上正式使用将会在下一篇中描述. 一,首先需要以下两个数据 appID和appsecret 如何获取这两个数据,请先登录微信公众 ...
- Java版本微信授权登录(升级版)
前面写了一遍文章<Java版本微信授权登录(测试版)>,可以当做入门的基础文章,这里继续做一点深入,主要解决的是,如何在本地开发中微信授权以后跳转到本地启动的项目中. 我们知道了微信公众平 ...
- 如何实现自有App上的小程序第三方微信授权登陆?
对于微信小程序来说,有 OpenID 或 UnionID 作为唯一标识,微信授权登陆小程序账号是很容易实现的,但对于其他应用上的小程序来说(如支付宝.百度等),打通该登陆方式是比较麻烦的. 之前在Fi ...
- web pc端 微信授权登陆 实例详解
首先,看看微信官方文档,了解一下具体实现步骤 微信官方文档: 微信登陆开发指南 基本了解了微信登陆的流程后,然后我们再来一起踩坑 1.先去微信公众平台申请网站,appId,设置域名 2.调用微信地址生 ...
- 微信授权登陆界面无法再次弹出,无法用户切换
微信授权登陆界面无法再次弹出,无法用户切换 一开始在项目中总是发现微信登录只在第一次给用户授权,后面微信登录后就不显示授权登录的界面.这样就导致微信用户无法切换,无法进行新用户的授权.查了很久才找到解 ...
最新文章
- 华为oj平台的新网址
- python代码自动格式化_代码的自动格式化
- 福建农林大学转录系统生物学课题组30万招聘(生信分析、组培转化)
- java开发乱码解决
- Junit使用方法总结
- shell脚本(四)
- 基于RV1126平台imx291分析 --- media部件注册 imx291
- MMKV_Android数据持久化方案调研-MMKV SP REALM ROOM WCDB...
- Spring Boot 整合定时任务,可以动态编辑的定时任务
- 全球互联网进入后美国时代:在世界互联网大会上的演讲
- 学电脑PHP,如何学电脑
- 租房申请html模板,实用的租房房源标题模板
- ubuntu20.04 重启黑屏 仅有左上角白色横杠闪烁
- g77、gfortran、gcc的区别与联系
- 线上测评图形题技巧二
- 阿里云OSS文件上传,后台签名方案
- Spring事务管理一:Spring事务管理的优点
- 分享8个超好用的免费工具/软件/网站(一定有你要的)
- Transformer讲解(三)- CV变形金刚-ViT知识介绍
- 再见了仪表盘!数据该有更好的“归宿”
热门文章
- python中,除法运算后取整数的几种情况
- tableau连接MySQL
- 2022第十五届全国大学生信息安全竞赛(ciscn)西南赛区部分WP
- 第五十一篇 前端之CSS内容
- AutoCAD二次开发之删除图层及图层上所有的实体
- win10 常用命令
- resultMap使用不当导致出现There is no WRITEABLE property named 'student_id' in class 'com.ssi.model.Stud
- 推荐一些亲测实用的小软件
- 2021年底跨平台技术比较和选型指南(也许是最全的)
- 电脑W ndoWs在哪里,苹果电脑如何安装wndows系统.doc