附官方文档地址:小程序登陆 | 微信开放文档

编码前准备工作:开发之前我们需要准备两个东西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 实现微信授权登陆相关推荐

  1. 微信授权登陆接入第三方App(步骤总结)Android。

    这几天开发要用到微信授权的功能,所以就研究了一下.可是微信开放平台接入指南里有几个地方写的不清不楚.在此总结一下,以便需要的人. 很多微信公众平台的应用如果移植到app上的话就需要微信授权登陆了. 目 ...

  2. 微信授权登陆【yixiyun】

    1,引入相关依赖(主要是最后一个) <dependency><groupId>com.github.binarywang</groupId><artifact ...

  3. 微信授权登陆接入第三方App(步骤总结)Android

    微信授权登陆接入第三方App(步骤总结) 这几天开发要用到微信授权的功能,所以就研究了一下.可是微信开放平台接入指南里有几个地方写的不清不楚.在此总结一下,以便需要的人. 很多微信公众平台的应用如果移 ...

  4. 微信授权登陆介入第三方APP

    这几天开发要用到微信授权的功能,所以就研究了一下.可是微信开放平台接入指南里有几个地方写的不清不楚.在此总结一下,以便需要的人. 很多微信公众平台的应用如果移植到app上的话就需要微信授权登陆了. 目 ...

  5. Java版本微信授权登录(测试版)

    这篇文章是对微信授权登录的一个测试版本,并不能直接在生产上使用,对于在生产上正式使用将会在下一篇中描述. 一,首先需要以下两个数据 appID和appsecret 如何获取这两个数据,请先登录微信公众 ...

  6. Java版本微信授权登录(升级版)

    前面写了一遍文章<Java版本微信授权登录(测试版)>,可以当做入门的基础文章,这里继续做一点深入,主要解决的是,如何在本地开发中微信授权以后跳转到本地启动的项目中. 我们知道了微信公众平 ...

  7. 如何实现自有App上的小程序第三方微信授权登陆?

    对于微信小程序来说,有 OpenID 或 UnionID 作为唯一标识,微信授权登陆小程序账号是很容易实现的,但对于其他应用上的小程序来说(如支付宝.百度等),打通该登陆方式是比较麻烦的. 之前在Fi ...

  8. web pc端 微信授权登陆 实例详解

    首先,看看微信官方文档,了解一下具体实现步骤 微信官方文档: 微信登陆开发指南 基本了解了微信登陆的流程后,然后我们再来一起踩坑 1.先去微信公众平台申请网站,appId,设置域名 2.调用微信地址生 ...

  9. 微信授权登陆界面无法再次弹出,无法用户切换

    微信授权登陆界面无法再次弹出,无法用户切换 一开始在项目中总是发现微信登录只在第一次给用户授权,后面微信登录后就不显示授权登录的界面.这样就导致微信用户无法切换,无法进行新用户的授权.查了很久才找到解 ...

最新文章

  1. 华为oj平台的新网址
  2. python代码自动格式化_代码的自动格式化
  3. 福建农林大学转录系统生物学课题组30万招聘(生信分析、组培转化)
  4. java开发乱码解决
  5. Junit使用方法总结
  6. shell脚本(四)
  7. 基于RV1126平台imx291分析 --- media部件注册 imx291
  8. MMKV_Android数据持久化方案调研-MMKV SP REALM ROOM WCDB...
  9. Spring Boot 整合定时任务,可以动态编辑的定时任务
  10. 全球互联网进入后美国时代:在世界互联网大会上的演讲
  11. 学电脑PHP,如何学电脑
  12. 租房申请html模板,实用的租房房源标题模板
  13. ubuntu20.04 重启黑屏 仅有左上角白色横杠闪烁
  14. g77、gfortran、gcc的区别与联系
  15. 线上测评图形题技巧二
  16. 阿里云OSS文件上传,后台签名方案
  17. Spring事务管理一:Spring事务管理的优点
  18. 分享8个超好用的免费工具/软件/网站(一定有你要的)
  19. Transformer讲解(三)- CV变形金刚-ViT知识介绍
  20. 再见了仪表盘!数据该有更好的“归宿”

热门文章

  1. python中,除法运算后取整数的几种情况
  2. tableau连接MySQL
  3. 2022第十五届全国大学生信息安全竞赛(ciscn)西南赛区部分WP
  4. 第五十一篇 前端之CSS内容
  5. AutoCAD二次开发之删除图层及图层上所有的实体
  6. win10 常用命令
  7. resultMap使用不当导致出现There is no WRITEABLE property named 'student_id' in class 'com.ssi.model.Stud
  8. 推荐一些亲测实用的小软件
  9. 2021年底跨平台技术比较和选型指南(也许是最全的)
  10. 电脑W ndoWs在哪里,苹果电脑如何安装wndows系统.doc