微信网页授权 获取用户信息
<?php namespace WeChat\Controller; use Think\Controller; class BaseController extends Controller { protected $user_id; protected function _initialize(){ if(empty($_SESSION['user']['id'])) { $code = $_GET['code']; if($code){ $url = "https://api.weixin.qq.com/sns/oauth2/access_token"; $data['appid'] = C('WX_APPID'); $data['secret'] = C('WX_SECRET'); $data['code'] = $code; $data['grant_type'] = "authorization_code"; $httpstr = http($url, $data, 'GET'); $steam=json_decode($httpstr); $_SESSION['user']['openid'] = $steam->openid; $_SESSION['user']['token'] = $steam->access_token; $member_model = D('Member'); $result = $member_model->where(['openid' => $steam->openid])->find(); if(!$result){ $member_data = get_wechat_user_info($steam->access_token, $steam->openid); if($member_data->errcode) { echo '用户信息错误,请重新加载';return; }else{ $add_wechat_member = $member_model->add([ 'openid' => $member_data->openid, 'user_name' => $member_data->nickname, 'sex' => $member_data->sex, 'create_time' => time(), 'headimgurl' => $member_data->headimgurl ]); $_SESSION['user']['openid'] = $member_data->openid; $_SESSION['user']['id'] = $this->user_id = $add_wechat_member; $_SESSION['user']['user_name'] = $member_data->nickname; $_SESSION['user']['sex'] = $member_data->sex; $_SESSION['user']['headimgurl'] = $member_data->headimgurl; $_SESSION['user']['time'] = time(); } }else{ $_SESSION['user']['openid'] = $result['openid']; $_SESSION['user']['id'] = $this->user_id = $result['id']; $_SESSION['user']['user_name'] = $result['user_name']; $_SESSION['user']['sex'] = $result['sex']; $_SESSION['user']['headimgurl'] = $result['headimgurl']; $_SESSION['user']['time'] = time(); } }else{ $appid = C('WX_APPID'); $redirect_uri = "http://pttest.itsumy.com".$_SERVER['REQUEST_URI']; $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; header("Location:".$url); } } } }