思路流程分析:用户点击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是表示关注了公众号,否则没有关注公众号。
关于简忆
简忆诞生的故事



粤ICP备16092285号
文章评论(0)