最近做微信公众号和小程序相关的开发。大家都知道微信开发调试起来比较麻烦,因此推荐给大家一个内网穿透的工具NATTAPP。附上官网一分钟快速上手地址:https://natapp.cn/article/natapp_newbie.。在这个平台上设置好一个域名。通过此域名可以映射到本地。
微信开发之前首先要有一个经过备案的域名 比如 http://sjx.s2.natapp.cc
授权步走如下
放到项目resource/static 目录下
在浏览器上访问 http://sjx.s2.natapp.cc/MP_verify_CchqzOKsBbk7hOMf.txt 会得到一串数字
返回公众号设置会看到网页授权域名上已经有值了。此时域名已经备案成功。
认证授权开发
demo 使用的是别人封装好的微信工具类可以实现快速开发
github地址: https://github.com/Wechat-Group/weixin-java-tools
新建url 配置类
yml 配置
编写授权接口
@GetMapping("/authorize")
public Stringauthorize(@RequestParam("returnUrl") String returnUrl) {
String url =urlConfig.getWechatMpAuthorize() +"/sell/wechat/userInfo"; //用户授权之后回调地址
//方法执行完会重定向
String redirectUrl =wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAUTH2_SCOPE_USER_INFO,
URLEncoder.encode(returnUrl));
return "redirect:" + redirectUrl;
}
授权成功之后回调地址接口
/**
* 当用户授权过之后会回调这个方法,这个方法可以获取用户的openid
**/
@GetMapping("/userInfo")
public StringuserInfo(@RequestParam("code") String code, @RequestParam("state") String returnUrl)throws Exception {
WxMpOAuth2AccessToken wxMpOAuth2AccessToken =new WxMpOAuth2AccessToken();
try {
wxMpOAuth2AccessToken =wxMpService.oauth2getAccessToken(code);
}catch (WxErrorException e) {
e.printStackTrace();
log.error("微信网页授权{}", e.getMessage());
throw new SellException(ResultEnum.WECHAT_MP_ERROR);
}
WxMpUser wxMpUser =wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null);
wxMpUser.getNickname();
String openId = wxMpOAuth2AccessToken.getOpenId();
return "redirect;" + returnUrl +"?openid=" + openId;
}
已上两个接口便完成了授权认证获取用户信息
测试
打开微信公众平台
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
加粗斜体的是需要替换的。
个人测试地址
https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的appid&redirect_uri=微信上备注的域名/sell/wechat/authorize?returnUrl=https://www.baidu.com&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
将这些地址发送到微信上的微信传输助手
在手机上点击地址就会回调预先设置好的授权地址
授权完成之后就会回调这个设置好的获取用户信息的接口
微信昵称和openId也已经获取到了