最近要做一个微信平台的投票活动,需要在关注公众号之后才能参与投票,那么,如何判断用户是否关注了公众号呢?
第一想法是,通过获取公众号的关注列表,然后搜索列表中是否有参与者的openid。
但是马上发现一个问题,就是这种方法需要每次都要获取一下关注列表,而且,当公众号的粉丝比较多时,这种方法就比较吃力了。
下面使用php方法,判断用户是否关注了公众号:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?php
$access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=XXXXXXXXXXXXXXXXXX&secret=XXXXXXXXXXXXXXXXXXXXXXXXXX" ;
$access_msg = json_decode( file_get_contents ( $access_token ));
$token = $access_msg ->access_token;
$subscribe_msg = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$token&openid=$_GET[openid]" ;
$subscribe = json_decode( file_get_contents ( $subscribe_msg ));
$gzxx = $subscribe ->subscribe;
//
if ( $gzxx === 1){
echo "已关注" ;
} else {
echo "未关注" ;
}
|
下面是第二个代码案例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
< ? php
$access_token = $this - > _getAccessToken();
$subscribe_msg = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token=' . $access_token . '&openid=' . $_SESSION [ 'wecha_id' ];
$subscribe = json_decode( $this - > curlGet( $subscribe_msg ));
$zyxx = $subscribe - > subscribe;
if ( $zyxx !== 1) {
echo '未关注!' ;
}
private function _getAccessToken() {
$where = array ( 'token' = > $this - > token);
$this - > thisWxUser = M( 'Wxuser' ) - > where( $where ) - > find();
$url_get = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $this - > thisWxUser[ 'appid' ]. '&secret=' . $this - > thisWxUser[ 'appsecret' ];
$json = json_decode( $this - > curlGet( $url_get ));
if (! $json - > errmsg) {
} else {
$this - > error( '获取access_token发生错误:错误代码' . $json - > errcode. ',微信返回错误信息:' . $json - > errmsg);
}
return $json - > access_token;
}
? >
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。