专栏首页方法论Spring Boot用户关注公众号获取用户openid案例

Spring Boot用户关注公众号获取用户openid案例

前言

在进行微信公众号开发中,有时我们需要获取粉丝的openid,以此完成一些业务的处理,例如:向指定用户推送模板消息,那么怎么获取用户的openid呢?实际上,当用户关注公众号后即可获取openid。

一.前置条件

首先,需要在微信公众平台进行服务器配置,配置完成后,用户与公众号的所有交互都会发送到用户填写的URL上。关于服务器配置可参考我的另一篇文章:Spring Boot微信公众号配置案例

二.编写业务处理接口

前面已经提到,用户与公众号的所有交互事件都会发送用户配置的URL上,而这个URL一旦配置后就不能再修改(也可以修改,但是要重新验证token),所以,我们要用同一个URL处理多种业务(包括验证token和用户与公众号交互处理),也就是用同一个接口处理多种业务。

例如我配置的URL后缀是“/checkToken”,那么处理用户关注取关的接口名称也必须是checkToken,返回值类型为String类型,业务处理代码如下表2.1所示。

表2.1 用户与公众号交互事件处理代码

    @ApiOperation("用户与公众号交互事件处理")
    @RequestMapping("/checkToken")
    public String checkToken(HttpServletRequest request,HttpServletResponse response)
        log.info("用户与公众号交互事件处理");
        try{
            Map<String ,String > requestMap = WxMessageUtil.parseXml(request);
            String messageType = requestMap.get("MsgType");
            String eventType = requestMap.get("Event");
            String openid = requestMap.get("FromUserName");
            if(messageType.equals("event")){
                //判断消息类型是否是事件消息类型
                log.info("公众号====>事件消息");
                log.info("openid:" + openid);
                log.info("Event:" + eventType);
                if(eventType.equals("subscribe")){
                    log.info("公众号====>新用户关注");
                }else if(eventType.equals("unsubscribe")){
                    log.info("公众号====>用户取消关注");
                }else{
                    log.info("公众号===>其他");
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return "";
    }

三.测试

关注公众号后,服务器将打印业务处理日志,如图3.1所示。

图3.1 业务处理日志截图

四.总结

用户关注公众号获取用户openid的业务还是比较简单的。实际上,对于公众号而言,这个openid参数名是FromUserName的,但是,习惯上我们还是称之为openid。

五.项目源码地址

项目源代码本人已上传至本人github上,感兴趣的小伙伴可以去下载。

https://github.com/LongYil/wxutils/

本文分享自微信公众号 - 小诸葛的博客(haibojishu),作者:小诸葛

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微信扫码登录网站实现案例(无需授权)

    最近因业务需要,需要给网站增加一个扫描公众号二维码登录网站的功能,通过扫码登录,一来用户登录网站不需再输入账号密码,提升了用户体验,二来也可以作为公...

    小诸葛
  • 微信小程序获取用户openid(附前后端源码)

    在开发微信小程序的时候,获取用户openid是再常见不过的事情了,openid是用户在指定小程序X小程序中的固定身份id,每个用户在该X小程序的都不...

    小诸葛
  • 软件开发之道

    2.对于较难理解的,一定要多看,这个多看不仅仅指一遍遍的阅读技术文档或代码,而且也可以理解为不止某一天看,因为有些知识需要消化,当时看过之后未必能够消化掉,因为...

    小诸葛
  • 专栏 | 阿里KDD2017论文:基于大规模图计算的本地算法对展示广告的行为预测

    机器之心
  • Linux笔记5.展开与引用

    章鱼喵
  • DJANGO的用户认证系统

    Django自带的用户认证系统,为开发者提供了许多在用户登陆登出方面的快捷开发命令。这篇博文为初学者讲解如何使用django的用户认证系统。 Django版本2...

    KEVINGUO_CN
  • DJANGO的用户认证系统

    Django自带的用户认证系统,为开发者提供了许多在用户登陆登出方面的快捷开发命令。这篇博文为初学者讲解如何使用django的用户认证系统。 Django版本2...

    KEVINGUO_CN
  • 剑指Offer面试题:16.合并两个排序的链表

    PS:这也是一道出镜率极高的面试题,我相信很多童鞋都会很眼熟,就像于千万人之中遇见不期而遇的人,没有别的话可说,唯有轻轻地问一声:“哦,原来你也在这里? ”

    Edison Zhou
  • 定位Oops的具体代码行

    来自Linus Torvalds的讨论: https://groups.google.com/group/linux.kernel/browse_thread/...

    一见
  • 原 荐 简单又灵活的安全框架--Shiro构架和身份认证流程

           Apache Shiro是一款强大易用的安全框架,它可以在任何应用环境中使用,能够跟第三方框架良好的耦合,它的设计目标就是简化应用程序的安全工作管...

    我叫刘半仙

扫码关注云+社区

领取腾讯云代金券