微信网页授权 获取用户信息

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

 

posted @ 2018-05-08 10:44  不一样的开始  阅读(429)  评论(0编辑  收藏  举报