最近要做一个微信平台的投票活动,需要在关注公众号之后才能参与投票,那么,如何判断用户是否关注了公众号呢?第一想法是,通过获取公众号的关注列表,然后搜索列表中是否有参与者的openid。但是马上发现一个问题,就是这种方法需要每次都要获取一下关注列表,而且,当公众号的粉丝比较多时,这种方法就比较吃力了。

查看了一下公众平台的文档,终于还是找到了另外的方法:

[php]<?php $access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=XXXXXXXXXXXXXXXXXXX&secret=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";$access_msg = json_decode(file_get_contents($access_token));$token = $access_msg->access_token;$subscribe_msg = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$token&openid=$_GET[openid]";$subscribe = json_decode(file_get_contents($subscribe_msg));$gzxx = $subscribe->subscribe;//if($gzxx === 1){echo "已关注";}else{echo "未关注";

}

?>[/php]

通过参与用户的openid就可以知道该用户是否关注了我们的公众号,而且我们还可以通过静默授权得到用户的openid,操作上减少了用户点击授权的步骤,有了更好的用户体验。

教训:

2015年6月25日一早客户来电话说投票页面的关注不行了,一看,嘿!还真的不行了!

检查了一下代码,发现了问题:通过用户openid来判断用户是否关注公众号,前提是获取access_token,在这里,我没有将access_token在服务器上缓存,导致接口请求次数超过2000次,当天不能再使用了!所以修改了一下代码,方法还是根据做自定义分享标题时的获取access_token的方法,将其以文件的方式存储与服务器中,如果access_token没过期,则使用文件内存储的,否则重新获取access_token并将其再存储于文件内保存。

代码如下:

[php]<?php $data = json_decode(file_get_contents("access_token.json"));if ($data->expire_time access_token;if ($access_token) {$data->expire_time = time() + 7000;$data->access_token = $access_token;$fp = fopen("access_token.json", "w");fwrite($fp, json_encode($data));fclose($fp);}} else {$access_token = $data->access_token;}

function httpGet($url) {$curl = curl_init();curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_TIMEOUT, 500);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);curl_setopt($curl, CURLOPT_URL, $url);

$res = curl_exec($curl);curl_close($curl);

return $res;}

$subscribe_msg = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$_GET[openid]";

$subscribe = json_decode(httpGet($subscribe_msg));$gzxx = $subscribe->subscribe;print_r($subscribe);if($gzxx !== 1){echo "未关注!";}?>[/php]

这样,就不用再担心access_token不够用的了。注:微信官方是不允许这种强制关注才能参加活动的方式的,一经发现并核实,后果严重!

php判断是否已关注,php判断用户是否关注微信订阅号或公众号相关推荐

  1. 7-5 悄悄关注 (25 分) 新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列

    7-5 悄悄关注 (25 分) 新浪微博上有个"悄悄关注",一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户.现在我们来做一回网络侦 ...

  2. 7-11 悄悄关注 新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对

    7-11 悄悄关注 新浪微博上有个"悄悄关注",一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户.现在我们来做一回网络侦探,根据某人 ...

  3. 企业微信获取用户信息响应40029(微信小程序与公众号出现类似问题应该是同样的原因)

    企业微信获取用户信息响应40029 在对接企业微信的时候需要通过code去获取userId,但是会返回40029的error码,经过测试与验证原因是访问地址 https://open.weixin.q ...

  4. ChatGPT分销版多开4.3.5版本源码 -新增 首页是否弹出公众号关注二维码注册/登录后否弹出公众号ChatGPT分销版4.3.5

    ChatGPT分销版多开4.3.5版本源码,ChatGPT分销版源码升级记录 版本号:4.3.5 - 默认 AI分销版系统源码升级   后台系统配置-界面配置: 新增 首页是否弹出公众号关注二维码 注 ...

  5. 从用户角度说说微信订阅号的三个问题

    从写公众号以来,我也不能免俗的会关注每篇文章的数据,比如阅读量.打开率.转发数.点赞数等等. 但是,有时候对一些明显因为设计导致的数据问题感到很无奈,所以今天想从一个测试人员的用户角度说说微信订阅号的 ...

  6. 微信公众号项目(公众号关注登录网站)

    目录 文章目录 目录 资料地址 资料说明 课程内容 云盘资料概览 资料地址 微信公众号项目(公众号关注登录网站) 资料说明 项目是基于微信公众号完成的,需要学习公众号项目开发的同学,可以参考. 资料包 ...

  7. uniapp/微信扫码打开公众号(并且判断是否关注公众号)

    1.将二维码下载下来 这个二维码微信扫的话,未关注会进入到公众号详情,关注的话,会进入到公众号内 2.判断用户是否关注公众号 请求微信接口,判断用户是否关注公众号_weixin_33971205的博客 ...

  8. 小程序webview关注公众号_公众号与小程序有什么区别

    自从2017年1月,腾出推出小程序以来,不少企业.商家都纷纷开发了属于自己的小程序.而这些企业之前往往已经拥有属于自己微信公众号,但为什么又要开发小程序呢?公众号与小程序有什么区别?下面不妨跟着上海黄 ...

  9. 批量关闭公众号推送_微信内测新功能:提醒用户可停止接收长期不阅读公众号推送...

    微信表示,有的用户长时间不阅读的订阅号过多,这些帐号存在用户的消息列表中会影响用户对内容的筛选效率.因此,希望通过提醒用户关闭不感兴趣的订阅号的推送,以达到提升阅读效率和体验的目的. 腾讯科技讯 7月 ...

最新文章

  1. mysql isnu_mysql和nginx服务是否正常监控脚本
  2. 工频干扰频谱测量_【鼎阳硬件智库译文|高速总线之测试测量】定量测量多通道串行数据系统中的串扰引起的抖动...
  3. 【C++】读取文件夹下所有文件名
  4. Java多线程系列--“JUC原子类”01之 框架
  5. 懒人 IDEA 插件推荐: EasyCode 一键帮你生成所需代码~
  6. ewomail 内部通讯_教你搭建自己的邮件服务器-Ubuntu 18.04下通过Docker使用EwoMail实现...
  7. html页脚行距,html Word行距怎么设置
  8. python开源项目homeassistant_树莓派安装家庭助理,Homeassistant,HASS
  9. SpringBoot中的Tomcat是如何启动的
  10. nyoj_66_分数拆分_201312012122
  11. java中的foreach
  12. 类似地图比例尺钩子下边框实现
  13. java没有pom文件_java – Maven依赖没有得到相应的POM文件下载
  14. 邱锡鹏《神经网络与深度学习》蒲公英书学习笔记
  15. 1.用 perf report 分析四个for进程
  16. xlsx表格怎么筛选重复数据_excel表格中如何筛选重复数据
  17. CV中domain adaptation领域自适应问题
  18. 计算机领域中dns是什么意思,dns错误是什么意思?dns错误要如何解决?
  19. 什么事IPC(Inter-Process Communication,进程间通信)
  20. flvplayer.swf flv视频播放器使用方法

热门文章

  1. Linux磁盘配额(一)
  2. python中的reduce、lambda函数
  3. JNLP(jar包签名)
  4. LINUX内核经典面试题30道及解答
  5. strlen与sizeof区别
  6. Tomcat6.0的JNDI使用方法(连接池)
  7. Can not find the tag library descriptor for http://www.springframework.org/tags/form 解决方法
  8. python3 报错 ‘builtin_function_or_method‘ object has no attribute 解决方法
  9. golang 获取文件行数
  10. python3 中的编码问题 unicode, utf-8, gbk, ascii