第三方平台如何接受授权公众号取消授权事件

原创 2015年07月10日 10:51:52

第三方平台设置了:授权事件接受URL

这里写图片描述

该URL主要有两个作用:
(1)微信服务器每隔10分钟定时推送component_verify_ticket。第三方平台方收到ticket
(2)如果公众号取消了第三方平台的授权,微信服务器会通过这个url告知第三方平台。

    public String receiveAuth() {
        String msgSignature = getRequest().getParameter("msg_signature");
        String timestamp = getRequest().getParameter("timestamp");
        String nonce = getRequest().getParameter("nonce");
        logger.info("msgSignature:" + msgSignature + ",timestamp:" + timestamp+ ",nonce:" + nonce);
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(getRequest().getInputStream()));
            String line = null;
            StringBuilder sb = new StringBuilder();
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
            String encStr = sb.toString();
            //解密推送信息
            if (encStr != null) {
                WXBizMsgCrypt pc = new WXBizMsgCrypt(Constants.WX_OPEN_TOKEN,Constants.WX_OPEN_ENCODING_AESKEY,Constants.WX_OPEN_APPID);
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                DocumentBuilder db = dbf.newDocumentBuilder();
                StringReader sr = new StringReader(encStr);
                InputSource is = new InputSource(sr);
                Document document = db.parse(is);
                Element root = document.getDocumentElement();
                NodeList nodelist1 = root.getElementsByTagName("Encrypt");
                String encrypt = nodelist1.item(0).getTextContent();
                String format = "<xml><ToUserName><![CDATA[toUser]]></ToUserName><Encrypt><![CDATA[%s]]></Encrypt></xml>";
                String fromXML = String.format(format, encrypt);
                String resultXml = pc.decryptMsg(msgSignature, timestamp,nonce, fromXML);
                Map<String, String> xmlMap = MessageUtil.praseXmlString2Map(resultXml);
                if(StringUtils.isNotNull(xmlMap.get("InfoType")) && "unauthorized".equals(xmlMap.get("InfoType"))){
                    String appid = xmlMap.get("AuthorizerAppid");
                    WxAccount account = new WxAccount();
                    account.setAccountappid(appid);
                    account = wxAccountService.getWxAccount(account);
                    if(account != null){
                        //公众号取消授权,设置相应的状态标志
                        account.setStatus(0);
                        wxAccountService.updateWxAccount(account);
                        logger.error("wx_account Cancel authorization set status = 0  appid="+appid);
                    }
                }
                // 将component_verify_ticket存入redis数据库
                String ticket = xmlMap.get("ComponentVerifyTicket");
                if(StringUtils.isNotNull(ticket)){
                    Constants.WX_OPEN_COMPONENT_VERIFY_TICKET = ticket;
                    logger.info("ComponentVerifyTicket:"+ ticket);
                    jedis = pool.getShardedJedisPool().getResource();
                    jedis.set("ComponentVerifyTicket", ticket);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
版权声明:本文为博主原创文章,未经博主允许不得转载。

微信公众号第三方开发之四回调url中获取授权方的授权信息以及基本信息

回顾上一章节将到的授权成功,微信上的提醒标志:       然后微信服务器回调你设定好的回调地址。在附带上授权码和过期时间。那么在里面我们具体怎么来查找获取授权公众号的基本信息呢?       ...
  • eadio
  • eadio
  • 2016年04月30日 18:01
  • 6487

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

微信公众号消息与事件处理机制

一:授权事件接收URL1:微信服务器每隔10分钟定时推送component_verify_ticket。第三方平台方在收到ticket推送后也需进行解密{ComponentVerifyTicket=t...

微信公众账号登陆授权开发——5(解决使用官方获获取第三方平台方获取预授权码)

微信公众账号登陆授权开发——5(解决使用官方获获取第三方平台方获取预授权码)...

微信第三方平台推送verify_ticket的接收处理(PHP实现)

当公众号第三方平台创建并审核通过之后,微信服务器便会每隔十分钟给开发者填写的授权事件接收url推送verify_ticket。使用的是xml格式,并且加密传输。也就是说开发者在接收保存这个ticket...

微信第三方平台定时接收component_verify_ticket

获取第三方平台令牌(component_access_token),增加了component_verify_ticket参数。component_verify_ticket由公众平台每隔10分钟,持续...

公众号第三方平台开发 获取 component_verify_ticket

8、推送component_verify_ticket协议 在公众号第三方平台创建审核通过后,微信服务器会向其“授权事件接收URL”每隔10分钟定时推送component_verify_ticket...

微信第三方平台开发经验总结(一):接收component_verify_ticket

接收component_verify_ticket 在第三方平台创建审核通过后,微信服务器会向其“授权事件接收URL”每隔10分钟定时推送component_verify_ticket。第三...
  • lwx0313
  • lwx0313
  • 2017年08月14日 17:46
  • 1746

微信第三方平台授权流程

1,获取第三方平台access_token   http请求方式: POST(请使用https协议)  https://api.weixin.qq.com/cgi-bin/componen...

如何在微信中取消已授权的第三方应用APP

由于需要测试微信登录功能,在微信授权登录成功后需要解除绑定功能。一直没有找到对应的方法。偶然间在 “发现” => "游戏"里看见了最近在玩的列表中居然有相关的APP,然后在菜单中“游戏管理”取消游戏关...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第三方平台如何接受授权公众号取消授权事件
举报原因:
原因补充:

(最多只允许输入30个字)