思路流程分析:用户点击wait.php进入授权,跳转到getUser.php,执行获取用户相关信息,来判断用户是否关注了公众号,关注执行相应操作,没关注跳转到微信公众号关注页面。
wait.php代码
<?php header("Content-type: text/html; charset=utf-8"); $appid='APPID'; $redirect_uri = urlencode ( 'http://h5.example.com/weixin/getUser.php' ); $url ="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect"; header("Location:".$url); ?>
getUser.php代码
<?php header("Content-type: text/html; charset=utf-8"); $appid = "APPID"; $secret = "SECRET"; $code = $_GET["code"]; //第一步:取全局access_token $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret"; $token = getJson($url); //第二步:取得openid $oauth2Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code"; $oauth2 = getJson($oauth2Url); //第三步:根据全局access_token和openid查询用户信息 $access_token = $token["access_token"]; $openid = $oauth2['openid']; $get_user_info_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN"; $userinfo = getJson($get_user_info_url); //打印用户信息 if($userinfo['errcode']==40003){ header("Location:http://h5.example.com/weixin/wait.php"); } if($userinfo['subscribe'] !=1){ //未关注执行相应操作 header("Location:https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5OTU1MDQ2Nw==#wechat_redirect"); }else{ //已关注执行相应操作 ..... } function getJson($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); return json_decode($output, true); } ?>
上面通过subscribe参数来判断用户是否关注了公众号,当它的值为1是表示关注了公众号,否则没有关注公众号。
文章评论(0)