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


    <?php
    namespace WeChatController;
    use ThinkController;
    
    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);
                }
            }
        }
    }
  • 相关阅读:
    Go语言标准库flag基本使用
    GO学习-(12) Go语言基础之函数
    GO学习-(11) Go语言基础之map
    GO学习-(10) Go语言基础之指针
    Spring AOP
    JDK动态代理
    版本控制
    版本控制
    浅析Java反射机制
    Spring Batch学习
  • 原文地址:https://www.cnblogs.com/zjj1990/p/9006936.html
Copyright © 2020-2023  润新知