获取用户基本信息(UnionID机制)
获取用户基本信息(UnionID机制)
在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。
请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.)绑定公众号后,才可利用UnionID机制来满足上述需求。
UnionID机制说明:
开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
获取用户基本信息(包括UnionID机制)
开发者可通过OpenID来获取用户基本信息。请使用https协议。接口调用请求说明
http请求方式:GET
https://api./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":"/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
namespaceapp\wxapiswh\controller;
usethink\Controller;
error_reporting(0);
//基本设置
classWeixinextendsController
{
publicfunctionhead_user(){
$weixin_config=\think\Db::name('wx_setupdb')->find();
$appid=$weixin_config['appid'];
$redirect_uri=urlencode('/wxapiswh/Weixin/getUser');//将字符串以URL编码。
$url="https://open./connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&
response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
header("Location:".$url);//header()函数向客户端发送原始的HTTP报头。
}
publicfunctiongetUser(){
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"\n";
echo"html>
\n";
print'
';
print'';//打印输出
print'
用户名:'.$nickname.'
';//打印输出print'
城市:'.$country.'-'.$province.'-'.$city.'
';//打印输出print'
';
print'';
}else{
echo"NOCODE";
}
}
publicfunctiongetUserInfo($code)
{
$weixin_config=\think\Db::name('wx_setupdb')->find();
$appid=$weixin_config['appid'];
$appsecret=$weixin_config['appsecret'];
//Getaccess_token
$access_token_url="https://api./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对应的值
//Getuserinfo
$userinfo_url="https://api./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;
}
publicfunctionhttps_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;
}
}
效果: