在用户与微信公众号产生消息交互后,微信公众号可获得用户的OpenID(加密后的微信号,每个用户对每个微信公众号的OpenID是唯一的。对于不同的微信公众号,同一用户的OpenID不同)。微信公众号可通过本接口根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间等。
开发者可通过OpenID来获取用户基本信息。
获取用户信息的接口如下。
https:// api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
该接口的参数说明如表6-13所示。
表6-13 获取用户信息请求的参数说明
获取用户基本信息的代码实现如下。
1 <?php 2 $access_token = "QfUKtidNK0z-WA9C38JIncULipiunLfKpic1rmcnPOCs4UuZ7ek7PvjM5mLXnk JH7d5u2vX2q7UY9wurrJRjFrnIi4O6BkDwSmfE3wv1-ToSrEXGzwOpzgc8SSw74tNHDAUbACAWTN"; 3 4 $openid = "oiPuduGV7gJ_MOSfAWpVmhhgXh-U"; 5 $url = "https:// api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token& openid=$openid&lang=zh_CN"; 6 $output = https_request($url); 7 var_dump($output); 8 9 function https_request($url, $data = null)10 {11 $curl = curl_init;12 curl_setopt($curl, CURLOPT_URL, $url);13 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);14 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);15 if (!empty($data)){16 curl_setopt($curl, CURLOPT_POST, 1);17 curl_setopt($curl, CURLOPT_POSTFIELDS, $data);18 }19 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);20 $output = curl_exec($curl);21 curl_close($curl);22 return $output;23 }24 ?>
上述代码执行后,返回的结果如下。
{ "subscribe":1, "openid":"oiPuduGV7gJ_MOSfAWpVmhhgXh-U", "nickname":"喵了个咪", "sex":1, "language":"zh_CN", "city":"深圳", "province":"广东", "country":"中国", "headimgurl":"http:// wx.qlogo.cn/mmopen/AkcGLGLkeINKqK5nbT6DtrL9XY47H1niaRLBq0 4jrPSzcIlbWVMgiaUbgVnAWVcQJz63mtyNF4YjdpiaBLymaFmKCheBpQyu9BR/0", "subscribe_time":1468461486, "unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL", "remark":"fangbei", "groupid":2, "tagid_list":[ 2, 102, 105 ]}
上述数据的参数说明如表6-14所示。
表6-14 获取用户信息结果的参数说明