springBoot 微信登录(网页登录、小程序、app登录)
程序员文章站
2022-03-26 19:03:01
springBoot 登录网页登录在常量类里面加上微信开放平台的secretid和appid /** * 微信的secretid */ public static final String WX_SECRET = "asdasf"; /** * 微信的appid */ public static final String WX_APPID = "wfdweqfq";去调用微信的接口获取返回 //应该拿的是公众开...
springBoot 登录
网页登录
在常量类里面加上微信开放平台的secretid和appid
/**
* 微信的secretid
*/
public static final String WX_SECRET = "asdasf";
/**
* 微信的appid
*/
public static final String WX_APPID = "wfdweqfq";
去调用微信的接口获取返回
//应该拿的是公众开放平台的secret 和appId
String param = "appid=" + Constants.WX_APPID + "&secret=" + Constants.WX_SECRET + "&code=" + code + "&grant_type=authorization_code";
// https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
String s = HttpUtils.sendPost("https://api.weixin.qq.com/sns/oauth2/access_token", param);
Object Object = JSONObject.parse(s);
Map map = (Map) Object;
//在此可获取access_token 接口调用凭证 expires_in access_token接口调用凭证超时时间,单位(秒) refresh_token 用户刷新access_token
//Union 授权用户唯一标识 scope 用户授权的作用域,使用逗号(,)分隔
//目前只取Union和openid
String accessToken = (String) map.get("access_token");
String openId = (String) map.get("openid");
String Unionparam = "access_token=" + accessToken + "&openid=" + openId + "&lang=zh_CN";
// https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
String Union = HttpUtils.sendPost("https://api.weixin.qq.com/sns/userinfo", Unionparam);
Object UnionObject = JSONObject.parse(Union);
Map unionmap = (Map) UnionObject;
Map<String, String> Wxmap = new HashMap<>();
Wxmap.put("openId", (String) unionmap.get("openid"));
Wxmap.put("unionid", (String) unionmap.get("unionid"));
Wxmap.put("headimgurl", (String) unionmap.get("headimgurl"));
Wxmap.put("nickname", (String) unionmap.get("nickname"));
Wxmap.put("sex", unionmap.get("sex")+"");
如果不是跨平台 获取openid即可,如果需要跨平台,需要先将应用关联到微信开放平台,再走微信的第二个方法,带上accessToken和openid,返回全平台统一的unionid。
小程序
String param = "appid=" + Constants.MINIPROGRAM_APPID + "&secret=" + Constants.MINIPROGRAM_SECRET + "&js_code=" + code + "&grant_type=authorization_code";
String s = HttpUtils.sendPost("https://api.weixin.qq.com/sns/jscode2session", param);
Object Object = JSONObject.parse(s);
Map map = (Map) Object;
//在此可获取access_token 接口调用凭证 expires_in access_token接口调用凭证超时时间,单位(秒) refresh_token 用户刷新access_token
//Union 授权用户唯一标识 scope 用户授权的作用域,使用逗号(,)分隔
//目前只取Union和openid
Map<String, String> Wxmap = new HashMap<>();
Wxmap.put("openId", (String) map.get("openid"));
Wxmap.put("unionid", (String) map.get("unionid"));
System.out.println((String) map.get("unionid"));
return Wxmap;
小程序基本上同理,不过访问地址不一样,还有appid、secret、和code这三个不一样
app登录
app登录就有意思了,它不需要处理,前端就可以拿到unionId,可能会有安全泄露问题,目前想到的就前端加密,后端解密,现在没有实现,如果以后遇到,可以试试
本文地址:https://blog.csdn.net/weixin_43003720/article/details/111041229
上一篇: 锻炼是否过量?这款可穿戴设备来告诉你
下一篇: Dcoker的安装及使用命令