简介
最近做了个项目用到了微信分享功能,奈何认识的同学也没人会,只好自己研究文档博客来做了。看了不少博客,每篇博客都有自己的特色,但就是没找到一篇从注册开始到分享成功的完整案例,只好打开N多页面一个个试。所以写了这篇博客希望后来人可以快速的完成微信分享功能。
前期准备
- 完成微信认证的微信公众号(个人测试可以使用微信公众号测试号)
- 后端服务必须可以通过域名访问
- 后端我使用的是基于wx-java框架的springboot项目
- 前端由于本人较菜使用的是H5页面,如果希望使用VUE等前端框架请自行搜索
开始配置
微信公众号测试号
https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
进入上方网址,微信扫码登录即可得到一个拥有微信分享权限的测试号。暂时只需要appID和appsecret。JS接口安全域名填自己的域名,不需要带http/https。接口配置信息配置需要我们完成后端代码才能配置。
注意: 如果使用的是经过认证的公众号,还需将MP_verifyxxxx.txt上传至服务器,使用域名+文件名 可访问到文件即可。
后端代码
WxJava关于公众号的Demo: https://gitee.com/binary/weixin-java-mp-demo-springboot/tree/master
- 下载该Demo
- 将
/src/main/resources/application.yml.template
文件的扩展名修改为application.yml
- 将前面得到的appId和secret写入配置文件,token自定义即可,aesKey通信加密时使用测试号没这功能
- 启动项目,找到
WxPortalController
文件,得到微信测试号接口配置的URL地址
5.配置测试接口配置信息
6.生成前端需要的签名信息
@RestController
@RequestMapping("/wx")
@RequiredArgsConstructor
public class WxAuthController {
Logger logger = LoggerFactory.getLogger(this.getClass());
private final WxMpService wxService;
@Value("${wx.mp.configs[0].appid}")
private String appId;
@Resource
private GetAcessTokenUtils getAcessTokenUtils;
/**
* 获取微信分享的签名配置,对jsapi_ticket进行缓存防止请求过多被封号
* 允许跨域(只有微信公众号添加了js安全域名的网站才能加载微信分享,故这里不对域名进行校验)
*/
@GetMapping("/getShareSignature2")
public WxJsapiSignature getShareSignature2(HttpServletRequest request, HttpServletResponse response) throws WxErrorException {
String wxShareUrl=request.getParameter