获取用户基本信息(UnionID机制)
获取用户基本信息(UnionID机制)
在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。
请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。
UnionID机制说明:
开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
获取用户基本信息(包括UnionID机制)
开发者可通过OpenID来获取用户基本信息。请使用https协议。
接口调用请求说明 http请求方式: GET https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
参数说明
返回说明
正常情况下,微信会返回下述JSON数据包给公众号:
{ "subscribe": 1, "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", "nickname": "Band", "sex": 1, "language": "zh_CN", "city": "广州", "province": "广东", "country": "中国", "headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0", "subscribe_time": 1382694957, "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL" "remark": "", "groupid": 0, "tagid_list":[128,2], "subscribe_scene": "ADD_SCENE_QR_CODE", "qr_scene": 98765, "qr_scene_str": "" }
参数说明
实例:thinkphp5+微信公众号获取用户基本信息
<?php namespace app\wxapiswh\controller; use think\Controller; error_reporting(0); // 基本设置 class Weixin extends Controller { public function head_user(){ $weixin_config=\think\Db::name('wx_setupdb')->find(); $appid=$weixin_config['appid']; $redirect_uri = urlencode ( 'https://www.tpxhm.com/wxapiswh/Weixin/getUser' );//将字符串以 URL 编码。 $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);//header() 函数向客户端发送原始的 HTTP 报头。 } public function getUser(){ header("content-type:text/html;charset=utf-8"); $code = $_GET["code"];//预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值。 if (isset($_GET['code'])){//判断code是否存在 $userinfo = $this->getUserInfo($code); $nickname = $userinfo['nickname'];//获取nickname对应的值,即用户名 $headimgurl = $userinfo['headimgurl']; $city = $userinfo['city']; $country = $userinfo['country']; $province = $userinfo['province']; echo "<style >*{margin:0; padding:0;}body{max-width:640px; margin:0 auto}</style>\n"; echo "<!doctype html><html><head><meta content=\"width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0\" name=\"viewport\"><body>\n"; print '<div style="width:100%; height:100vh; margin:0 auto; background:#00161c"><div style="width:200px; margin:0 auto; border:2px solid #fff; border-radius:10px;">'; print '<img style=" display:block; margin:0 auto; padding-top:150px;" src="'.$headimgurl.'" width="180px" height="180px;" />';//打印输出 print '<h2 style="text-align:left;font-size:20px; color:#fff;font-weight:normal; line-height:24px; padding-top:5px;">用户名:'.$nickname.'</h2>';//打印输出 print '<h2 style="text-align:left; font-size:20px; font-weight:normal; color:#fff;line-height:24px; padding-top:5px;">城市:'.$country.'-'.$province.'-'.$city.'</h2>';//打印输出 print '</div></div>'; print '</body></html>'; }else{ echo "NO CODE"; } } public function getUserInfo($code) { $weixin_config=\think\Db::name('wx_setupdb')->find(); $appid=$weixin_config['appid']; $appsecret = $weixin_config['appsecret']; //Get access_token $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code"; $access_token_json = $this->https_request($access_token_url);//自定义函数 $access_token_array = json_decode($access_token_json,true);//对 JSON 格式的字符串进行解码,转换为 PHP 变量,自带函数 //获取access_token $access_token = $access_token_array['access_token'];//获取access_token对应的值 //获取openid $openid = $access_token_array['openid'];//获取openid对应的值 //Get user info $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN"; $userinfo_json = $this->https_request($userinfo_url); $userinfo_array = json_decode($userinfo_json,ture); return $userinfo_array; } public function https_request($url)//自定义函数,访问url返回结果 { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($curl); if (curl_errno($curl)){ return 'ERROR'.curl_error($curl); } curl_close($curl); return $data; } }
效果:
文章评论(0)