取消关注_抖音一键取消所有关注 - CSDN
精华内容
参与话题
  • 1、关注/取消关注 2、菜单点击   事件类型介绍: 在微信中有事件请求是消息请求中的一种。请求类型为:event 而event事件类型又分多种事件类型,具体分关注:subscribe取消关注:unsubscribe自定义...

    事件处理是非常重要的,这一章讲讲常见的事件处理

    •  

    • 1、关注/取消关注
    • 2、菜单点击

     

    事件类型介绍:
    • 在微信中有事件请求是消息请求中的一种。请求类型为:event
    • 而event事件类型又分多种事件类型,具体分
    • 关注:subscribe
    • 取消关注:unsubscribe
    • 自定义菜单点击:CLICK

       

       根据上面的类型分类可建对应的常量

       

    Java代码  收藏代码
    1. /** 
    2.      * 请求消息类型:事件 
    3.      */  
    4.     public static final String REQ_MESSAGE_TYPE_EVENT = "event";  
    5.   
    6.     /** 
    7.      * 事件类型:subscribe(关注) 
    8.      */  
    9.     public static final String EVENT_TYPE_SUBSCRIBE = "subscribe";  
    10.   
    11.     /** 
    12.      * 事件类型:unsubscribe(取消关注) 
    13.      */  
    14.     public static final String EVENT_TYPE_UNSUBSCRIBE = "unsubscribe";  
    15.   
    16.     /** 
    17.      * 事件类型:CLICK(自定义菜单点击事件) 
    18.      */  
    19.     public static final String EVENT_TYPE_CLICK = "CLICK";  
    20.       

     

    • 再在CoreServiceImpl中处理对应事件类型,先上CoreServiceImpl的源码
    • Java代码  收藏代码
      1. package com.ifp.weixin.biz.core.impl;  
      2.   
      3. import java.util.ArrayList;  
      4. import java.util.Date;  
      5. import java.util.List;  
      6. import java.util.Map;  
      7. import javax.servlet.http.HttpServletRequest;  
      8. import org.apache.log4j.Logger;  
      9. import org.springframework.stereotype.Service;  
      10. import com.ifp.weixin.biz.core.CoreService;  
      11. import com.ifp.weixin.constant.Constant;  
      12. import com.ifp.weixin.entity.Message.resp.Article;  
      13. import com.ifp.weixin.entity.Message.resp.NewsMessage;  
      14. import com.ifp.weixin.entity.Message.resp.TextMessage;  
      15. import com.ifp.weixin.util.MessageUtil;  
      16.   
      17. @Service("coreService")  
      18. public class CoreServiceImpl implements CoreService {  
      19.   
      20.     public static Logger log = Logger.getLogger(CoreServiceImpl.class);  
      21.   
      22.     @Override  
      23.     public String processRequest(HttpServletRequest request) {  
      24.         String respMessage = null;  
      25.         try {  
      26.             // xml请求解析  
      27.             Map<String, String> requestMap = MessageUtil.parseXml(request);  
      28.   
      29.             // 发送方帐号(open_id)  
      30.             String fromUserName = requestMap.get("FromUserName");  
      31.   
      32.             // 公众帐号  
      33.             String toUserName = requestMap.get("ToUserName");  
      34.             // 消息类型  
      35.             String msgType = requestMap.get("MsgType");  
      36.   
      37.             TextMessage textMessage = new TextMessage();  
      38.             textMessage.setToUserName(fromUserName);  
      39.             textMessage.setFromUserName(toUserName);  
      40.             textMessage.setCreateTime(new Date().getTime());  
      41.             textMessage.setMsgType(Constant.RESP_MESSAGE_TYPE_TEXT);  
      42.             textMessage.setFuncFlag(0);  
      43.   
      44.             String respContent = "";  
      45.   
      46.             // 文本消息  
      47.             if (msgType.equals(Constant.REQ_MESSAGE_TYPE_TEXT)) {  
      48.                 // 接收用户发送的文本消息内容  
      49.                 String content = requestMap.get("Content");  
      50.   
      51.                 // 创建图文消息  
      52.                 NewsMessage newsMessage = new NewsMessage();  
      53.                 newsMessage.setToUserName(fromUserName);  
      54.                 newsMessage.setFromUserName(toUserName);  
      55.                 newsMessage.setCreateTime(new Date().getTime());  
      56.                 newsMessage.setMsgType(Constant.RESP_MESSAGE_TYPE_NEWS);  
      57.                 newsMessage.setFuncFlag(0);  
      58.   
      59.                 List<Article> articleList = new ArrayList<Article>();  
      60.   
      61.                 // 单图文消息  
      62.                 if ("1".equals(content)) {  
      63.                     Article article = new Article();  
      64.                     article.setTitle("我是一条单图文消息");  
      65.                     article.setDescription("我是描述信息,哈哈哈哈哈哈哈。。。");  
      66.                     article.setPicUrl("http://www.iteye.com/upload/logo/user/603624/2dc5ec35-073c-35e7-9b88-274d6b39d560.jpg");  
      67.                     article.setUrl("http://tuposky.iteye.com");  
      68.                     articleList.add(article);  
      69.   
      70.                     // 设置图文消息个数  
      71.                     newsMessage.setArticleCount(articleList.size());  
      72.                     // 设置图文消息包含的图文集合  
      73.   
      74.                     newsMessage.setArticles(articleList);  
      75.                     // 将图文消息对象转换成xml字符串  
      76.                     respMessage = MessageUtil.newsMessageToXml(newsMessage);  
      77.                 }  
      78.                 // 多图文消息  
      79.                 else if ("3".equals(content)) {  
      80.   
      81.                     Article article1 = new Article();  
      82.                     article1.setTitle("我是一条多图文消息");  
      83.                     article1.setDescription("");  
      84.                     article1.setPicUrl("http://www.isic.cn/viewResourcesAction//logo/20130913/2013091314543416032.jpg");  
      85.                     article1.setUrl("http://tuposky.iteye.com/blog/2008583");  
      86.   
      87.                     Article article2 = new Article();  
      88.                     article2.setTitle("微信公众平台开发教程Java版(二)接口配置 ");  
      89.                     article2.setDescription("");  
      90.                     article2.setPicUrl("http://www.isic.cn/viewResourcesAction//logo/20131021/2013102111243367254.jpg");  
      91.                     article2.setUrl("http://tuposky.iteye.com/blog/2008655");  
      92.   
      93.                     Article article3 = new Article();  
      94.                     article3.setTitle("微信公众平台开发教程Java版(三) 消息接收和发送");  
      95.                     article3.setDescription("");  
      96.                     article3.setPicUrl("http://www.isic.cn/viewResourcesAction//logo/20131021/2013102111291287031.jpg");  
      97.                     article3.setUrl("http://tuposky.iteye.com/blog/2017429");  
      98.   
      99.                     articleList.add(article1);  
      100.                     articleList.add(article2);  
      101.                     articleList.add(article3);  
      102.                     newsMessage.setArticleCount(articleList.size());  
      103.   
      104.                     newsMessage.setArticles(articleList);  
      105.                     respMessage = MessageUtil.newsMessageToXml(newsMessage);  
      106.                 }  
      107.   
      108.                 //事件处理开始  
      109.             } else if (msgType.equals(Constant.REQ_MESSAGE_TYPE_EVENT)) {  
      110.                 // 事件类型  
      111.                 String eventType = requestMap.get("Event");  
      112.   
      113.                 if (eventType.equals(Constant.EVENT_TYPE_SUBSCRIBE)) {  
      114.                     // 关注  
      115.                     respContent = "感谢您关注偶,这里会给您提供最新的公司资讯和公告!\n";  
      116.                     StringBuffer contentMsg = new StringBuffer();  
      117.                     contentMsg.append("您还可以回复下列数字,体验相应服务").append("\n\n");  
      118.                     contentMsg.append("1  我就是个测试的").append("\n");  
      119.                     contentMsg.append("2  我木有").append("\n");  
      120.                     contentMsg.append("3  我是多图文").append("\n");  
      121.                     respContent = respContent+contentMsg.toString();  
      122.                       
      123.                 } else if (eventType.equals(Constant.EVENT_TYPE_UNSUBSCRIBE)) {  
      124.                     // 取消关注,用户接受不到我们发送的消息了,可以在这里记录用户取消关注的日志信息  
      125.   
      126.                 }  else if (eventType.equals(Constant.EVENT_TYPE_CLICK)) {  
      127.   
      128.                     // 事件KEY值,与创建自定义菜单时指定的KEY值对应  
      129.                     String eventKey = requestMap.get("EventKey");  
      130.   
      131.                     // 自定义菜单点击事件  
      132.                     if (eventKey.equals("11")) {  
      133.                         respContent = "天气预报菜单项被点击!";  
      134.                     } else if (eventKey.equals("12")) {  
      135.                         respContent = "公交查询菜单项被点击!";  
      136.                     }  
      137.                 }  
      138.                 textMessage.setContent(respContent);  
      139.                 respMessage = MessageUtil.textMessageToXml(textMessage);  
      140.   
      141.             }  
      142.   
      143.         } catch (Exception e) {  
      144.             e.printStackTrace();  
      145.         }  
      146.         return respMessage;  
      147.     }  
      148. }  
       
    • 从第108行开始做事件处理,根据请求的事件类型,做出相应的反应。
    • 菜单点击事件:

         单独把菜单点击事件拉出来详细说说

         用户点击自定义菜单后,如果菜单按钮设置为click类型,则微信会把此次点击事件推送给开发者,注意view类型(跳转到URL)的菜单点击不会上报。

         参数说明:


    •  
    • 要注意的是 EventKey 这个参数,与菜单创建的时候中的key值是对应的。

        写出来的效果图为:依次触发的事件是

        关注,点击天气预报菜单,点击公交查询菜单


         
     


    展开全文
  • 关注和取消关注 <?php define("APPID","wx4cff8e15a7a0801d");//填写自己的APPID define("APPSECRET","4d7cb4b8b54412d9ef0c6a7c011cd570");//填写自己的APPSECRET define("TOKEN", "weixin");//token随便...

    关注和取消关注

    <?php
    define("APPID","wx4cff8e15a7a0801d");//填写自己的APPID
    define("APPSECRET","4d7cb4b8b54412d9ef0c6a7c011cd570");//填写自己的APPSECRET
    define("TOKEN", "weixin");//token随便填,只要一致就行。
    $wechat = new wechat();
    $wechat->responseMsg();
     
    class wechat{
        private $_appid;
        private $_appsecret;
        private $_token;
    	private $tpl=array(
    				//发送文本消息模板
    				'text' => '	<xml>
    							<ToUserName><![CDATA[%s]]></ToUserName>
    							<FromUserName><![CDATA[%s]]></FromUserName>
    							<CreateTime>%s</CreateTime>
    							<MsgType><![CDATA[text]]></MsgType>
    							<Content><![CDATA[%s]]></Content>
    							</xml>',
    	);
        public function __construct(){
            $this->_appid =APPID;
            $this->_appsecret =APPSECRET;
            $this->_token =TOKEN;
        }
    	/**
    	  *响应微信平台发送的消息
    	**/
        public function responseMsg()//所有的被动消息处理都从这里开始
        {
    		$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//获得用户发送信息
    		$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);//解析XML到对象
    		switch($postObj->MsgType){
    			case 'text': //文本处理
    				$this->_doText($postObj);
    				break;
    			case 'event': //事件处理
    				$this->_doEvent($postObj);
    				break;
    			default: exit;
    		}
    	}
        /**
    	  *_doText():处理文本消息
    	  *@postObj:响应的消息对象
    	**/
    	private function _doText($postObj)
    	{
    		$fromUsername = $postObj->FromUserName;
    		$toUsername = $postObj->ToUserName;
    		$keyword = trim($postObj->Content);
    		$time = time();           
    		if(!empty( $keyword ))
    		{
    			$contentStr='hello world!';
    			exit;
    			//这里可以做一些业务处理
    			if($keyword == "hello")
    				$contentStr = "Welcome to wechat world!";
    			$msgType = "text";
    			$resultStr = sprintf($this->tpl['text'], $fromUsername, $toUsername, $time, $contentStr);
    			echo $resultStr;
    		}
            exit;	
    	}
    	/**
    	  *_doEvent():处理事件消息
    	  *@postObj:响应的消息对象
    	**/
    	private function _doEvent($postObj){ //事件处理
    		switch($postObj->Event){
    			case  'subscribe': //订阅
    				$this->_doSubscribe($postObj);
    				break;
    			case 'unsubscribe': //取消订阅
    				$this->_doUnsubscribe($postObj);
    				break;
    			default:;
    		}
    	}
    	/**
    	  *处理关注事件
    	  *@postObj:响应的消息对象
    	**/
    	private function _doSubscribe($postObj){
    		$contentStr='欢迎您关注我的公众号!';
    		$str = sprintf($this->tpl['text'],$postObj->FromUserName,$postObj->ToUserName,time(),$contentStr);
    		//还可以保存用户的信息到数据库
    		echo $str;	
    	}
    	
    	/**
    	  *处理取消关注事件
    	  *@postObj:响应的消息对象
    	**/
    	private function _doUnsubscribe($postObj){
    		//把用户的信息从数据库中删除
    		//获取用户的openid,在进行一些业务操作
    		file_put_contents('useropenid.txt',$postObj->FromUserName);
    	}
    }
    

      

    转载于:https://www.cnblogs.com/ganwenjun/p/7160654.html

    展开全文
  • vue实现关注与取消关注的按钮

    千次阅读 2019-09-16 16:26:22
    关注前: 关注后: 鼠标悬浮: template部分: <template> <div> <button @click="favor" class="my_button" :style="{backgroundColor:bg_color, color: ft_color,}" ...

    先上效果图:
    关注前:
    在这里插入图片描述
    关注后:
    在这里插入图片描述
    鼠标悬浮:
    在这里插入图片描述
    template部分:

    <template>
        <div>
          <button   @click="favor"
                   class="my_button" :style="{backgroundColor:bg_color, color: ft_color,}"
                   @mouseenter="change()" @mouseleave="goback()">
            {{content}}
          </button>
        </div>
    </template>
    

    script部分:

    <script>
        export default {
            name: "zan",
            data () {
                return{
                    liked:false,
                    content:'+关注',
                    bg_color:"#fef0f0",
                    ft_color:"#f56c6c",
                }
            },
            methods:{
                favor (e) {
                    this.liked=!this.liked;
                    if(this.liked){
                        this.content="已关注";
                        this.bg_color="#f56c6c";
                        this.ft_color="#fef0f0";
                    }
    
                    else{
                        this.content="+关注"
                        this.bg_color="#fef0f0";
                        this.ft_color="#f56c6c";
    
                    }
                },
                change(){
                    this.bg_color="#ff9999";
                    this.ft_color="#fef0f0";
                },
                goback(){
                    if(this.liked){
                        this.bg_color="#f56c6c";
                        this.ft_color="#fef0f0";
                    }
                    else{
                        this.bg_color="#fef0f0";
                        this.ft_color="#f56c6c";
                    }
                }
            }
        }
    </script>
    

    style部分:

    <style >
    
      button{
        outline:none;
      }
    
      .my_button{
        color: #f56c6c;
        background: #fef0f0;
        border: #fbc4c4 solid;
        border-radius: 20px;
        padding: 12px 23px;
        text-align: center;
        font-size: 16px;
        -webkit-transform: scale(0.7);
      }
    
    </style>
    

    分析:
    1.总的来说,就是一个class(my_button),三个绑定事件(favor,change,goback),四个全局变量(liked, content,bg_color,ft_color)。主要分析3个绑定事件是如何修改4个全局变量的。

    2.my_button用于设定关注按钮的初始样式,参考的是el-button,没什么可分析的。

    3.liked变量,记录是否关注,取假表示未关注,取真表示已关注;content变量记录按钮的内容;bg_color按钮背景色,ft_color字体颜色。

    4.favor函数:绑定click事件,鼠标点击后修改liked的值,即修改是否点赞的状态;如果liked取真,则修改content为已关注,修改bg_color为#fef0f0,修改ft_color为#f56c6c;如果liked取假,修改bg_color为#f56c6c,修改ft_color为#fef0f0,修改content为+关注

    展开全文
  • 添加取消关注方法:;use App\Http\Models\home\Users; use App\Http\Requests; use App\Http\Controllers\Controller;use Overtrue\Wechat\Server; use Overtrue\Wechat\User as WxU

    添加取消关注方法:

    <?php namespace App\Http\Controllers\home;
    
    use App\Http\Models\home\Users;
    use App\Http\Requests;
    use App\Http\Controllers\Controller;
    
    use Overtrue\Wechat\Server;
    use Overtrue\Wechat\User as WxUser;
    
    class WelcomeController extends Controller {
        public function index()
        {
            //$encodingAESKey 可以为空
            $server =new Server(env('WX_APPID'),env('WX_TOKEN'));
            // 只监听指定类型事件
            $server->on('event', 'subscribe',[$this,'guanzhu']);
            //取消关注
            $server->on('event', 'unsubscribe',[$this,'qxgz']);
            //
            return $server->serve();
        }
        //@关注方法。
        public function guanzhu($event)
        {
            $wxuser=new WxUser(env('WX_APPID'),env('WX_SEC'));
            $wx_res=$wxuser->get($event->FromUserName);
            //写入数据库
            $user=new Users();
            $user->openid=$event->FromUserName;
            $user->name=$wx_res->nickname;
            $user->subtime=time();
            $user->save();
            //返回信息
            return '感谢您的关注';
        }
        //@取消关注
        public function qxgz($event)
        {
            //获得取消用户的 openid
            $open_id=$event->FromUserName;
            //删除对应记录。
            Users::where('openid',$open_id)->delete();
        }
    }
    
    展开全文
  • 20180301.实现功能:取消关注,移除粉丝作者:chenhaoting时间:2018-03-01分类:科研项目日志评论用户使用过程中一定需要取消关注等功能,首先后端实现数据库关注表的修改,添加DAO方法:@Overridepublic int ...
  • ajax实现关注/取消关注

    千次阅读 2017-03-05 13:03:12
    具体查看: 前台 后台
  • 10万+IT人都在关注,史上最全面的微信公众号开发系列教程:基于Springboot开发公众号关注/取消关注事件 前言: 关于监听公众号用户关注和取消关注的消息事件,微信官方文档给出的参考内容寥寥无几,具体如何配置...
  • 批量取消关注和删除微博

    千次阅读 2020-02-13 13:18:48
    批量取消关注:https://blog.csdn.net/xcb425/article/details/90464629 /* 点击批量管理 */ $(".btn_link.S_txt1").click(); /* 勾选全部 */ $$('.member_li').forEach(l => l.click()); /* 点击取消关注 */ $...
  • 前言: ​ 前一段时间心血来潮注册了一个头条号,想体验一把自媒体的感觉,初期为了... ​ 但是身为程序员,一个个取消关注岂不是又慢又low,自己花了几分钟写了段js,特意发出来分享给大家。 准备工作: c...
  • 今天不小心点错 关注了一个人的博客 可是怎么取消关注呢找了半天 终于找到解决办法0x01: 来到个人主页 (地址就是https://blog.csdn.net/用户名) 接着将鼠标指针移动到头像上边 选择账号设置 来到下图界面0x02: ...
  • JavaScript代码实现微博批量取消关注 微博居然没有批量取关功能, 简直不能忍好吗, 下面介绍通过javascript代码来实现批量取关的功能! 代码 不多逼逼, 直接上代码 var href = location.href; function main() { ...
  • Create proc Attention  @id int,--用户ID  @uid varchar(2000),--需要... @type int--操作类型 1:取消关注 2:关注 as   begin   declare @data varchar(2000),--数据源  @split varchar(2),--分割符  ...
  • 1、关注/取消关注 2、菜单点击 事件类型介绍: 在微信中有事件请求是消息请求中的一种。请求类型为:event 而event事件类型又分多种事件类型,具体分 关注:subscribe 取消关注:unsubscribe 自定义菜单点击...
  • $(".btn_link.S_txt1").click(); /* 勾选全部 */ $$('.member_li').forEach(l =>.../* 点击取消关注 */ $('.W_btn_a[node-type="cancelFollowBtn"]').click(); /* 点击确认按钮 */ $('[node-type="ok"]')....
  • 目录  1. 使用.net 操作 微信公众平台 —— 接入  2....  3.... 3.1 使用.net 操作 微信公众平台 —— 接收用户操作 —— 详细... 3.1.1 使用.net 操作 微信公众平台 —— 接收用户操作 —— 关注/取消关注 公众...
  • 微信是一款聊天工具软件,现在很流行。但有时,我们会想要取消关注一些人的微信,那么具体如何取消关注呢?下面就一步步告诉大家如何取消关注。 工具/原料 一款智能手机
  • 取消关注事件是指用户不再关注公众号, 这里微信也会发送事件消息到你填写的网址上。 这样你就可以进行相应的业务处理, 比如把用户的状态设置为不关注, 但是这里你不能再给这个用户...
  • 说到自媒体、新媒体运营,似乎是很潮的一份工作,其实相当苦逼。...微信公众号运营,除了要关注自媒体内容生产,文章阅读量和点赞、转发数量等,还要重视取消关注用户数量。 一般的公众号,在新增
  • 如何在新浪微博中批量取消关注

    万次阅读 2016-09-04 23:46:40
    一、背景如果不想看这烦人的背景介绍,直接跳到最后看”解决步骤“(sorry,不会页内跳转,求教)。本篇文章在《Android网络编程TCP、UDP(一)》开始后不久就写好了。...在“关注”的“未分组”中发现了
  • 新浪微博中的取消关注的弹出确认框很友好,项目中需要实现一个,就自己写了个类似的, 思路是,写一个隐藏的div,点击取消按钮,然后让div滑出来,点击确定或取消再滑进去 js代码 function confirmCancel...
1 2 3 4 5 ... 20
收藏数 92,874
精华内容 37,149
关键字:

取消关注