在做微信开发时有时需要判断用户是否已关注公众号,以便于做出不同的回应,如提醒用户关注公众号等。 判断用户是否已关注公众号可能通过获取用户信息来操作。 如果已关注公众号,那么微信返回的JSON数据包会包含”subscribe”: 1这样的信息。 如果未关注公众号,那么微信返回的JSON数据包会包含”subscribe”: 0这样的信息。 开发者可通过OpenID到http GET请求方式调用接口来获取用户基本信息。 请求示例: https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN 参数: 参数 是否必须 说明 access_token 是 调用接口凭证 openid 是 普通用户的标识,对当前公众号唯一 lang 否 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语 以下是PHP来判断用户是否已关注公众号的示例 function verification($openid,$accestoken){ $url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$accestoken.'&openid='.$openid.'&lang=zh_CN'; $json_Wxuser=json_decode(curlGet($url),true); //获取用户信息后,判断subcribe == 0 那么就是未关注 if(isset($json_Wxuser['subscribe']) && $json_Wxuser['subscribe'] == 0){ //跳转到提示用户关注页面中 $this->redirect('Guanzhu/index', array('id' => $id), 0, '页面跳转中...'); } } function curlGet($url){ $ch = curl_init(); $header = "Accept-Charset: utf-8"; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_AUTOREFERER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $temp = curl_exec($ch); return $temp; }