SpringBoot实现微信各应用统一账号信息登录开发 + 微信公众测试号开发
上一期我们讲了微信公众号的授权登录开发以及网站应用的二维码登录开发,这期我们来讲一下微信公众号和网站应用等其他微信应用的账号统一开发以及公众测试号的基本使用。
想了解上期微信授权登录开发等内容可点击下面链接:
https://blog.csdn.net/qq_42552574/article/details/107208558
由于公众号和网站应用等的用户openid是不同的,所以如果是需要将公众号和网站应用的用户做统一处理,则需要在开放平台中进行公众号的绑定操作,如下图:
绑定成功之后,即可调用微信平台的接口获取unionid
而unionid就是微信的唯一标识,接口则需要换成以下接口从而获取unionid
这里需要注意,token是需要单独调用一个接口去获取的,而openid则是上面的授权接口获取的
// 将获取的token存入redis中,待下次使用
Object token = redisUtil.get("WECHAT_TOKEN");
if(token==null){
//获取union的token
String unionToken = "https://api.weixin.qq.com/cgi-bin/token" +
"?grant_type=client_credential" +
"&appid=" + appid +
"&secret=" + appsecret ;
JSONObject unionTokenInfo = HttpUtils.httpGet(unionToken);
token = unionTokenInfo.getString("access_token");
// 设置超时时间
redisUtil.set("WECHAT_TOKEN", token);
redisUtil.expire("WECHAT_TOKEN", JwtUtil.EXPIRE_TIME*2 / 1000);
}
//请求获取用户信息(含unionId)
String unionUrl = "https://api.weixin.qq.com/cgi-bin/user/info" +
"?access_token=" + token +
"&openid=" + resultObject.getString("openid") +
"&lang=zh_CN";
JSONObject unionInfo = HttpUtils.httpGet(unionUrl);
String unionid = unionInfo.getString("unionid");
注意:(避坑)
- unionId是需要关注公众号后才能获取得到的。
- 获取token时需要注意,一个公众号正常一天获取token的限量是2000个,所以我们需要将token存起来用。
此外,我们讲一个题外话:由于需要关注公众号才可以获取到unionid,所以有些客户就需要你自动跳转一个界面,让用户关注一下公众号了。
跳转公众号关注界面:
如果业务有需要先关注公众号后才能进行公众号的一系列操作,这时,我们就需要先知道微信用户是否关注公众号,如果没有关注,我们则需要跳转到关注界面。
- 判断用户是否关注公众号:
如何判断,需要在unionId的机制下才能拿到 “subscribe” ,此返回值为0时,表示用户未关注公众号,为1时则表示已关注公众号,如何获取,如下:
//请求获取用户信息(含unionId)
String unionUrl = "https://api.weixin.qq.com/cgi-bin/user/info" +
"?access_token=" + unionTokenInfo.getString("access_token") +
"&openid=" + resultObject.getString("openid") +
"&lang=zh_CN";
JSONObject unionInfo = HttpUtils.httpGet(unionUrl);
//先判断该微信用户是否关注公众号,若没关注,强制重定向关注界面
Integer subscribe = unionInfo.getInteger("subscribe");
if(subscribe==0){
response.sendRedirect("https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz="+ uin_base64 +"#wechat_redirect");
}else{
...
}
- 如何配置跳转界面
从上面的代码我们可以看到有一个参数:uin_base64
此参数需要在公众平台,进入公众号后,查看网页源代码,找到uin_base64复制即可。
好了,讲完公众号关注界面的跳转,我们来进入公众测试号的基本使用(这里只讲解供微信授权登录使用)
公众测试号的使用:
我们在开发时往往都需要测试,这时候我们没有办法注册真正的公众号,所以微信提供了公众测试号:http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
用微信登录后,即可获取appId和appsercet,要想实现微信的授权登录我们只需要配置以下2个地方(JS接口安全域名+授权回调页面域名)
配置完以上的两处地方即可拿到appId和appsecret进行测试。
除此之外,我们还可以配置测试号的自定义菜单,方法如下:
-
首先进入微信在线接口调试工具:http://mp.weixin.qq.com/debug?token=1035035702&lang=zh_CN
-
生成token,选择基础支持,获取token
-
自定义菜单配置:
如下图,只需要选择自定义菜单,然后把token放入,再配置好body即可。
body的json格式:
{
"button": [
{
"name": "菜单名称1",
"type": "view",
"url": "菜单URL"
},
{
"name": "菜单名称2",
"type": "view",
"url": "https://xxxxxxxx"
}
]
}
注:此文为自己实操的记录,希望大家少踩点坑,如有错误请及时纠正!