先列出来需要用到的函数吧
function fetchUrl($url, $time=120)
{
$curl_opt = array(
CURLOPT_URL => $url,
CURLOPT_AUTOREFERER => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_CONNECTTIMEOUT => 0,
CURLOPT_TIMEOUT => $time,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_SSL_VERIFYHOST => FALSE
);
$ch = curl_init();
curl_setopt_array($ch, $curl_opt);
$contents = curl_exec($ch);
curl_close($ch);
return $contents;
}
1、获取当前用户是否关注该公众号,如果有关注还可以获取其他用户信息(详情见:微信公众平台开发者文档----用户管理----获取 用户基本信息)
这里我直接写例子:
$url2 = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={$access_token}&openid={$openid}&lang=zh_CN";
$res2 = fetchUrl($url2);
$data2 = (array)json_decode($res2); //微信会返回下述JSON数据包给公众号
$subscribe = $data2['subscribe'];
$openid = $data2['openid'];
(注意:如果用户没有关注该公众号,微信只会返回两个值:subscribe、openid,如果subscribe为0,则表示没有关注,否则会返回更多用户详细信息)
可以看到这个接口里面需要用到 $access_token 和 {$openid}这两个值,那么调用这个接口前,就需要先获取这两个值,这就需要调用其他微信接口。
2、获取access_token(详情见:网页授权获取用户基本信息)
$url1 = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
$res1 = fetchUrl($url1);
$data1 = (array)json_decode($res1);
$access_token = $data1['access_token'];
(注意:这个接口里面用到的两个值appid和secret在微信公众号后台----开发者中心--配置项--开发者ID 可以看到)
3、获取openid(详情见:网页授权获取用户基本信息----通过code换取网页授权access_token)
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$secret}&code={$code}&grant_type=authorization_code";
$data = (array)json_decode(fetchUrl($url));
$openid = $data['openid'];
(注意:这个接口用到的openid和secret和上个接口一样,在公众号后台拿到,另外一个code还需要用另个接口获取)
4、获取code(详情见:网页授权获取用户基本信息----用户同意授权,获取code)
这个接口需要引导关注者打开如下页面
我是在模板页面这么做的:
function goHome(){
var url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx2ae54a94c0b2fe8a&redirect_uri=http://zhuanti.49you.com/wxjb150427/ajax_action.php&response_type=code&scope=snsapi_base&state=1#wechat_redirect";
window.location.href=url;
}
然后一进入页面就执行这个函数
页面将跳转至 redirect_uri/?code=CODE&state=STATE(在这里获取code就好)
5、最后获取结果后,如果用户没有关注,想直接跳转至关注页面,用js:
window.location.href="weixin://profile/gh_44bbe5b7146c";
(注意:gh_44bbe5b7146c是微信公众号原始ID)
6、还有一项需要注意:
有时候会出现错误:redirect_uri参数错误,要检查下后台配置:
开发者中心----接口权限表-----网页授权获取用户基本信息 ,这里配置的域名和redirect_uri参数跳转的域名是否一致,当然也可能是其他原因。
域名格式:zhuanti.49you.com(不需要带http://)