网站获取微信用户信息

微信一直都是比较坑的,具体有官方文档补全、文档错误(环境)、域名、目录要求严格等。我也不是专业开发微信,只是做网站要用到微信支付、微信登录注册、微信发消息等,没有什么专业的测试工具,一直是修改一点、上传一点、测试一下,有必要把代码整理一下好提醒自己。

下面的代码意思是

1-检测到在微信中且没登录就获取用户openID

2-获取到openID后查找数据库发现有用户就自动登录

3-数据库中没有用户信息就获取微信用户的信息,包括头像、昵称、头像等,调到注册页面

4-如果不在微信中也没登录就调到登录页面

//检测网页授权
        $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
        if( preg_match('/micromessenger/', $ua) && empty(session('user'))){
            // 公众号的id和secret
            $appid = config('wx_appid');
            $appsecret = config('wx_appsecret');
           
            $index=url('portal/index/index','',true,true);
            $index0= urlencode($index);
            
            if(empty($_GET["code"])){
               //开始只获取openid
                $scope='snsapi_base';
                $url0='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.
                '&redirect_uri='.$index0.'&response_type=code&scope='.$scope.'&state=STATE#wechat_redirect';
                session('wx',['scope'=>$scope,'url0'=>$url0]);
               
                header("Location: ".$url0);
                exit('正在获取微信授权openid');
            }
            $code = $_GET["code"];
            //openid
            $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid.
            "&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";
            $res =zz_curl($url);
            
             //获取到openid就查询用户信息,没有信息需要查询微信信息后注册,有信息到主页
            if(empty($res['openid'])){
                exit('微信信息获取失败,请退出重试');
            }else{
                session('wx.openid',$res['openid']);
                
                $user=Db::name('user')->where('openid',$res['openid'])->find();
                if(empty($user)){
                    //需要获取微信信息
                    $access_token = config('access_token');
                    $openid = $res['openid'];
                    $get_user_info_url='https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN';
                    //获取到用户信息
                    $userinfo =zz_curl($get_user_info_url);
                    if(empty($userinfo['openid'])){
                        zz_log('user_info授权失败$$access_token'.$access_token);
                        session('wx',null);
                        session('redirect',null);
                        exit('微信授权信息获取失败,请退出重试');
                    }else{
                        session('wx',$userinfo);
                        session('redirect',null);
                        $this->redirect(url('user/register/register'));
                    }
                }else{
                    session('user',$user);
                    $this->redirect($redirect);
                }
            }
            

        }

    //不是在微信中就调到登录页面

        if(empty(session('user'))){
            $this->redirect(url('user/login/login'));
        }else{
            $this->redirect(url('user/index/index'));
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值