我們在做微信公眾號活動的時候,會做一些H5的海報供用戶分享,在分享過程中經常會遇到對用戶身份的判斷,尤其是該用戶是不是粉絲。如果不是粉絲,我們可以引導關注公眾號,從而達到吸粉目的,如果是粉絲,我們再進行一些福利的派發或活動資格的領取。那么如何用PHP實現對用戶是否關注公眾號進行判斷呢?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <?php error_reporting(1); $appid='公眾號APPID'; $secret='公眾號APPSECRET'; $web_url='http://www.xaszfyks.com/'; if (!isset($_GET['code'])) { $redirect_uri=urlencode($web_url); $url='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri='.$redirect_uri.'&response_type=code&scope=snsapi_base&state=1#wechat_redirect'; header("location:$url");exit(); }//此IF語句是判斷是否為微信瀏覽器打開,如果不是,則提示請在微信打開該頁面 $code=trim($_GET['code']);//PHP獲取頁面CODE $url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code'; $access=file_get_contents($url); $data=json_decode($access,true); $access_token=$data['access_token'];//根據CODE、APPID、APPSECRET獲取網頁授權的ACCESSTOKEN(此ACCESSTOKEN接口不限制次數) $url='https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid=OPENID&lang=zh_CN'; $user=file_get_contents($url); $arr=json_decode($user,true); $openid=$arr['openid']; //使用網頁授權ACCESSTOKEN獲取OPENID $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret; $access=file_get_contents($url); $access_arr=json_decode($access,true); $access_token=$access_arr['access_token']; //獲取全局ACCESSTOKEN(此接口消耗每日2000的次數,建議緩存) $url="https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$access_token."&openid=".$openid."&lang=zh_CN"; $response = curlGet($url); $result = json_decode($response,true);//轉換JSON文件為數組 function curlGet($url = '', $options = array()) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); if (!empty($options)) { curl_setopt_array($ch, $options); } //https請求 不驗證證書和host curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $data = curl_exec($ch); curl_close($ch); return $data; } //var_dump($res); $fans=$result['subscribe'];//根據$result中的subscribe鍵值來判斷是否關注,1為已關注,0為未關注 if($fans === 1) {echo "已關注"; } else {echo "未關注"; } |