获取用户基本信息需要以下三步:
-
获取code
使用以下地址请求code:
https://open.weixin.qq.com/connect/oauth2/authorize ?appid=APPID &redirect_uri=REDIRECT_URI &response_type=code &scope=snsapi_userinfo &state=123#wechat_redirect
以上地址需要的参数解释:
appid
: 你的公众开发平台的appidredirect_uri
: 你的回调地址, 获得code后会把code作为参数传入此地址中response_type
: 直接填写code就行了scope
: 如果获取用户信息的code就用snsapi_userinfo就行了state
: (非必须)用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验 -
通过
code
获取access_token
和openid
如果第一步没有问题的话, 在第一步中的redirect_uri参数地址中会接收到code信息;
使用以下地址请求access_token和openid:
https://api.weixin.qq.com/sns/oauth2/access_token ?appid=APPID &secret=SECRET &code=CODE &grant_type=authorization_code
以上地址需要的参数解释:
appid
: 你的公众开发平台的appidsecret
: 你的公众开发平台的AppSecretcode
: 第一步传过来的codegrant_type
: 填写authorization_code就OK -
通过
access_token
和openid
获取用户基本信息:使用以下地址请求用户基本信息:
https://api.weixin.qq.com/sns/userinfo ?access_token=ACCESS_TOKEN &openid=OPENID&lang=zh_CN';
以上地址需要的参数解释:
access_token
: 通过第二步获取的access_tokenopenid
: 通过第二步获取的openidlang
: 填写zh_CN就ok
通过以上3步就能获取用户信息, 下面附上php代码的实现:// 入口函数
function main(){
$appid="wxf445027deded67b7";
$redirect_uri=urlencode("http://XXXXXX/redirect); // 这里的回调地址为下面的函数
$url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri="
.$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect";
header('location:'.$url);
}
// 回调地址
function redirect(){
$info= $_REQUEST;
// 获取access_token和openid
$appid="wxf445027deded789";// 公众平台的appid
$secret="2e3a89b8de95d123213213";// 公众平台的secret
$code= $info['code'];
$url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='
.$secret.'&code='.$code.'&grant_type=authorization_code';
$data= getCurl($url);
// 获取用户信息
$access_token= $data->access_token;
$openid= $data->openid;
$url1='https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='
.$openid.'&lang=zh_CN';
$data1= getCurl($url1);
echo json_encode($data1);
}
// curl请求数据函数
function getCurl($url){
$ch= curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,10);
$data= json_decode(curl_exec($ch));
curl_close($ch);
return $data;
}
// 入口函数
function main(){
$appid="wxf445027deded67b7";
$redirect_uri=urlencode("http://XXXXXX/redirect); // 这里的回调地址为下面的函数
$url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri="
.$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect";
header('location:'.$url);
}
// 回调地址
function redirect(){
$info= $_REQUEST;
// 获取access_token和openid
$appid="wxf445027deded789";// 公众平台的appid
$secret="2e3a89b8de95d123213213";// 公众平台的secret
$code= $info['code'];
$url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='
.$secret.'&code='.$code.'&grant_type=authorization_code';
$data= getCurl($url);
// 获取用户信息
$access_token= $data->access_token;
$openid= $data->openid;
$url1='https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='
.$openid.'&lang=zh_CN';
$data1= getCurl($url1);
echo json_encode($data1);
}
// curl请求数据函数
function getCurl($url){
$ch= curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,10);
$data= json_decode(curl_exec($ch));
curl_close($ch);
return $data;
}