微信公众平台-oauth授权获取用户信息


<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; }

 

posted @ 2014-10-13 23:15  c-Sharp  阅读(285)  评论(0)    收藏  举报