900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 根据微信公众号关注/取消关注事件 获取用户信息

根据微信公众号关注/取消关注事件 获取用户信息

时间:2020-09-08 00:09:14

相关推荐

根据微信公众号关注/取消关注事件 获取用户信息

第一步:微信公众平台->基本配置->服务器配置->配置接收地址

第二步:接收微信服务器推送过来的事件

微信文档地址:

关注/取消关注事件

用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL。方便开发者给用户下发欢迎消息或者做帐号的解绑。为保护用户数据隐私,开发者收到用户取消关注事件时需要删除该用户的所有信息。

微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。

关于重试的消息排重,推荐使用FromUserName + CreateTime 排重。

假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。

推送XML数据包示例:

<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[subscribe]]></Event></xml>

参数说明:

第三步:根据接收的数据处理事件

public function index(){$data = input();file_put_contents('./aaa.log',\json_encode($data));$postStr = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");$objectxml = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);//将文件转换成 对象$datas = array();foreach ($objectxml as $k => $v) {$datas[(string) $k] = (string) $v;}//用户关注和取消关注事件if(isset($datas['Event'])){if($datas['Event'] == 'subscribe' || $datas['Event'] == 'unsubscribe'){//@todo 处理自己的逻辑}}return '';}

第四步:根据公众号openid获取用户信息

public function getUserGzInfo(){$postData = input();$ACCESS_TOKEN = $this->getAccessToken();$userInfoUrl = 'https://api./cgi-bin/user/info?access_token='.$ACCESS_TOKEN.'&openid='.$postData['FromUserName'].'&lang=zh_CN';$userInfo = request_get($userInfoUrl);$userInfo = json_decode($userInfo,true);successMsg('成功',userInfo);}public function getAccessToken(){$appid = '自己填写公众号openid';$secret = '自己填写公众号密钥';//获取token$url = 'https://api./cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;$ret = request_get($url);if($ret == false){return false;}$ret = @json_decode($ret,true);return $ret['access_token'];}

分享完毕!如有问题请留言

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。