<a href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8de2dbd9035457a4&redirect_uri=http://http://wx.198958.com/weixin/oauth2.php&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect">点击这里绑定</a>
//这是在微信上跳转的页面
//这个经过回调后的页面
if (isset($_GET['code'])){
$code=$_GET['code'];
//echo $code;
//code 有值 用户授权
//然后获取access_token的值
$appid="wx8de2dbd9035457a4";
$secret="0096585c74a76cd497cc0471bb9f9cd1";
$access_url="https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$secret}&code={$code}&grant_type=authorization_code";
$file_contents = urlData($access_url);
//解析json格式的数据
$json=json_decode($file_contents);
//获取access_token
if(isset($json->access_token)){
$access_token=$json->access_token;
//echo $access_token;
//拉去用户信息
$user_info="https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$code}&lang=zh_CN";
//获取到的用户json信息
$userData =json_decode(urlData($user_info));
//用户的唯一标识
$openid=$userData->openid;
//用户昵称
$nickname=$userData->nickname;
//用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
$sex=$userData->sex;
//用户个人资料填写的省份
$province=$userData->province;
//普通用户个人资料填写的城市
$city =$userData->city;
//国家,如中国为CN
$country =$userData->country;
//用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
$headimgurl =$userData->headimgurl ;
//用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
$privilege =$userData->privilege ;
echo $openid."<br>";
echo $nickname."<br>";
echo $headimgurl."<br>";
}
//错误信息
if(isset($json->errcode)){
echo $json->errcode;
}
}else{
echo "NO CODE";
}
function urlData($url){
$user = curl_init();
curl_setopt ($user, CURLOPT_URL, $url);
curl_setopt ($user, CURLOPT_RETURNTRANSFER, 1);
//针对https
curl_setopt($user, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($user, CURLOPT_SSL_VERIFYHOST, false);
$file_contents = curl_exec($user);
curl_close($user);
return $file_contents;
}
function format($format) {
$args = func_get_args();
$format = array_shift($args);
preg_match_all('/(?=\{)\{(\d+)\}(?!\})/', $format, $matches, PREG_OFFSET_CAPTURE);
$offset = 0;
foreach ($matches[1] as $data) {
$i = $data[0];
$format = substr_replace($format, @$args[$i], $offset + $data[1] - 1, 2 + strlen($i));
$offset += strlen(@$args[$i]) - 2 - strlen($i);
}
return $format;
}