700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > php判断是否已关注 php判断用户是否关注微信订阅号或公众号

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

时间:2019-02-26 01:37:30

相关推荐

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

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

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

[php]<?php $access_token="https://api./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./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,操作上减少了用户点击授权的步骤,有了更好的用户体验。

教训:

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_timeaccess_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;}

functionhttpGet($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./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不够用的了。注:微信官方是不允许这种强制关注才能参加活动的方式的,一经发现并核实,后果严重!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。