第一想法是,通过获取公众号的关注列表,然后搜索列表中是否有参与者的openid。
- <?php
- $access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=XXXXXXXXXXXXXXXXXX&secret=XXXXXXXXXXXXXXXXXXXXXXXXXX";
- $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
- $access_token = $this - > _getAccessToken();
- $subscribe_msg = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$access_token.'&openid='.$_SESSION['wecha_id'];
- $subscribe = json_decode($this - > curlGet($subscribe_msg));
- $zyxx = $subscribe - > subscribe;
- if ($zyxx !== 1) {
- echo'未关注!';
- }
- private function _getAccessToken() {
- $where = array('token' = > $this - > token);
- $this - > thisWxUser = M('Wxuser') - > where($where) - > find();
- $url_get = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this - > thisWxUser['appid'].'&secret='.$this - > thisWxUser['appsecret'];
- $json = json_decode($this - > curlGet($url_get));
- if (!$json - > errmsg) {
- } else {
- $this - > error('获取access_token发生错误:错误代码'.$json - > errcode.',微信返回错误信息:'.$json - > errmsg);
- }
- return $json - > access_token;
- }
- ?>
复制代码 |