php判断是否已关注,php判断用户是否关注微信订阅号或公众号
最近要做一个微信平台的投票活动,需要在关注公众号之后才能参与投票,那么,如何判断用户是否关注了公众号呢?第一想法是,通过获取公众号的关注列表,然后搜索列表中是否有参与者的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判断用户是否关注微信订阅号或公众号相关推荐
- 7-5 悄悄关注 (25 分) 新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列
7-5 悄悄关注 (25 分) 新浪微博上有个"悄悄关注",一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户.现在我们来做一回网络侦 ...
- 7-11 悄悄关注 新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对
7-11 悄悄关注 新浪微博上有个"悄悄关注",一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户.现在我们来做一回网络侦探,根据某人 ...
- 企业微信获取用户信息响应40029(微信小程序与公众号出现类似问题应该是同样的原因)
企业微信获取用户信息响应40029 在对接企业微信的时候需要通过code去获取userId,但是会返回40029的error码,经过测试与验证原因是访问地址 https://open.weixin.q ...
- ChatGPT分销版多开4.3.5版本源码 -新增 首页是否弹出公众号关注二维码注册/登录后否弹出公众号ChatGPT分销版4.3.5
ChatGPT分销版多开4.3.5版本源码,ChatGPT分销版源码升级记录 版本号:4.3.5 - 默认 AI分销版系统源码升级 后台系统配置-界面配置: 新增 首页是否弹出公众号关注二维码 注 ...
- 从用户角度说说微信订阅号的三个问题
从写公众号以来,我也不能免俗的会关注每篇文章的数据,比如阅读量.打开率.转发数.点赞数等等. 但是,有时候对一些明显因为设计导致的数据问题感到很无奈,所以今天想从一个测试人员的用户角度说说微信订阅号的 ...
- 微信公众号项目(公众号关注登录网站)
目录 文章目录 目录 资料地址 资料说明 课程内容 云盘资料概览 资料地址 微信公众号项目(公众号关注登录网站) 资料说明 项目是基于微信公众号完成的,需要学习公众号项目开发的同学,可以参考. 资料包 ...
- uniapp/微信扫码打开公众号(并且判断是否关注公众号)
1.将二维码下载下来 这个二维码微信扫的话,未关注会进入到公众号详情,关注的话,会进入到公众号内 2.判断用户是否关注公众号 请求微信接口,判断用户是否关注公众号_weixin_33971205的博客 ...
- 小程序webview关注公众号_公众号与小程序有什么区别
自从2017年1月,腾出推出小程序以来,不少企业.商家都纷纷开发了属于自己的小程序.而这些企业之前往往已经拥有属于自己微信公众号,但为什么又要开发小程序呢?公众号与小程序有什么区别?下面不妨跟着上海黄 ...
- 批量关闭公众号推送_微信内测新功能:提醒用户可停止接收长期不阅读公众号推送...
微信表示,有的用户长时间不阅读的订阅号过多,这些帐号存在用户的消息列表中会影响用户对内容的筛选效率.因此,希望通过提醒用户关闭不感兴趣的订阅号的推送,以达到提升阅读效率和体验的目的. 腾讯科技讯 7月 ...
最新文章
- mysql isnu_mysql和nginx服务是否正常监控脚本
- 工频干扰频谱测量_【鼎阳硬件智库译文|高速总线之测试测量】定量测量多通道串行数据系统中的串扰引起的抖动...
- 【C++】读取文件夹下所有文件名
- Java多线程系列--“JUC原子类”01之 框架
- 懒人 IDEA 插件推荐: EasyCode 一键帮你生成所需代码~
- ewomail 内部通讯_教你搭建自己的邮件服务器-Ubuntu 18.04下通过Docker使用EwoMail实现...
- html页脚行距,html Word行距怎么设置
- python开源项目homeassistant_树莓派安装家庭助理,Homeassistant,HASS
- SpringBoot中的Tomcat是如何启动的
- nyoj_66_分数拆分_201312012122
- java中的foreach
- 类似地图比例尺钩子下边框实现
- java没有pom文件_java – Maven依赖没有得到相应的POM文件下载
- 邱锡鹏《神经网络与深度学习》蒲公英书学习笔记
- 1.用 perf report 分析四个for进程
- xlsx表格怎么筛选重复数据_excel表格中如何筛选重复数据
- CV中domain adaptation领域自适应问题
- 计算机领域中dns是什么意思,dns错误是什么意思?dns错误要如何解决?
- 什么事IPC(Inter-Process Communication,进程间通信)
- flvplayer.swf flv视频播放器使用方法
热门文章
- Linux磁盘配额(一)
- python中的reduce、lambda函数
- JNLP(jar包签名)
- LINUX内核经典面试题30道及解答
- strlen与sizeof区别
- Tomcat6.0的JNDI使用方法(连接池)
- Can not find the tag library descriptor for http://www.springframework.org/tags/form 解决方法
- python3 报错 ‘builtin_function_or_method‘ object has no attribute 解决方法
- golang 获取文件行数
- python3 中的编码问题 unicode, utf-8, gbk, ascii