本篇文章为你整理了JAVA实现微信公众号授权(java微信公众号授权登录)的详细内容,包含有java实现微信公众号授权功能 java微信公众号授权登录 java 公众号 java微信公众号消息推送 JAVA实现微信公众号授权,希望能帮助你了解 JAVA实现微信公众号授权。
一、前提条件
1.申请微信公众号测试号申请一个微信公众号测试号。测试号申请:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
2.扫码登陆注册,注册成功后就会生成微信公号的appID和appsecret
3.需要设置网页授权(体验接口权限表 —》 网页服务 —》网页帐号 —》 网页授权获取用户基本信息
4.点击修改,填写域名,切记一定不能加上http://协议,
注:没有域名的话可以用内网穿透动态解析一个域名:https://natapp.cn/register
注册登录成功后可以看到下图,选择免费隧道进行购买
购买免费的隧道之后,点击我的隧道就会看下图1,同时在本地新建一个natapp目录,并且下载客户端到natapp目录下,将压缩包解压,同时在需要在新建一个config.ini文件,这样我们就拿到了我们的域名(步骤5)
下载客户端
config.ini文件内容:
#将本文件放置于natapp同级目录 程序将读取 [default] 段
#在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置
#命令行参数 -config= 可以指定任意config.ini文件
[default]
authtoken=xxxxxxxxxx #对应一条隧道的authtoken
clienttoken= #对应客户端的clienttoken,将会忽略authtoken,若无请留空,
log=none #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none
loglevel=ERROR #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG
http_proxy= #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空
5.配置域名
6.下载微信开发者工具:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
二:实现逻辑
网页授权流程分为四步:参考官方:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
1.引导用户进入授权页面同意授权,获取code
public void getCode(HttpServletResponse response) throws Exception{ String appId = "wxbac840ef8aba6443"; // 官方地址 String urlFir = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="; // 微信申请的域名(提前准备) String domain = "http://rhvp5f.natappfree.cc"; // 自定义跳转方法 String redirectMethod = "/v1/weChat/callback"; String encoderUrl = getURLEncoderString(domain + redirectMethod); String url = urlFir + appId + " redirect_uri=" + encoderUrl + " response_type=code scope=snsapi_base" + " state=123" + "#wechat_redirect"; response.sendRedirect(url); }
public static String getURLEncoderString(String str) { String result = ""; if (null == str) { return ""; } try { result = java.net.URLEncoder.encode(str, "GBK"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return result; }
2.通过 code 换取网页授权access_token(与基础支持中的access_token不同)
public void callback(@RequestParam String code, @RequestParam String state) { String appId = "wxbac840ef8aba6443"; String appIdSecret = "dbf4aadaae8dab4e699ff5259c0c0ad8"; log.info("获取code:{}",code); String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appId + " secret=" + appIdSecret + " code=" + code + " grant_type=authorization_code"; Map String, Object paramMap = null; String res = HttpUtil.get(url, paramMap); String openid = JSONObject.parseObject(res).getString("openid"); //只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。 String unionid = JSONObject.parseObject(res).getString("unionid"); log.info("根据code查询得到openId:{}",openid); log.info("unionid:{}",unionid); }
注:网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。本次文章也是到本步骤结束。
3.如果需要,开发者可以刷新网页授权access_token,避免过期
4.通过网页授权access_token和 openid 获取用户基本信息(支持 UnionID 机制)
以上就是JAVA实现微信公众号授权(java微信公众号授权登录)的详细内容,想要了解更多 JAVA实现微信公众号授权的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。