laravel-admin微信网页授权获取用户信息过程

最近在重构我们平台得前端页面以及逻辑,再此记录一下微信网页版授权获取用户资料得过程

  1. 第一步,安装
composer require "overtrue/laravel-wechat:~3.0"  //overtrue/laravel-wechat:~5.0适应于高版本laravel

  1. 第二步,在config/app.php中添加两行代码
providers下添加

Overtrue\LaravelWeChat\ServiceProvider::class,

aliases下添加

'EasyWeChat' => Overtrue\LaravelWeChat\Facade::class,
  1. 创建配置文件
php artisan vendor:publish

创建成功后进入config/wechat.php下配置公众号信息。如图:
在这里插入图片描述
可以在.env里去配置公众号信息

  1. 项目中使用,上代码
use EasyWeChat\Factory;
//1
public function index(Request $request)
    {
    //通过路由进入首先判断session是否有值
        if(empty(session('userInfo'))){
        //没有值去授权获取资料
           $this->getUserInfo();
          
        }else{
        //有值就从session中获取值,进入页面
            $userinfo = session('userInfo');
            return view('index.HomeIndex',['data'=>$userinfo]);
        }     
    }
//3    获取code
    public static function getCode()
    {
    	//获取公众号配置信息
        $config = config('wechat.official_account.default');
      $http = urlencode('http://xxxx.com/api/getUserInfo')//回调地址,处理获取微信用户信息
      
        $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$config['app_id'].'&redirect_uri='. $http.'&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect';//snsapi_userinfo:弹出授权页面,可通过openid拿到昵称、性别、所在地   snsapi_user:不弹出授权页面,直接跳转,只能获取用户openid
       
        header('location:'. $url);
    }
    // 4 通过code获取用户信息
    public static function getCodeUser()
    {
    //这一步可以获取到微信用户信息
        $config = config('wechat.official_account.default');
        $app = Factory::officialAccount($config);
        $oauth = $app->oauth;
        $response = $oauth->user(); 
        return $response;
    }
    //2 执行获取资料
    public function getUserInfo()
    {
   		 //这里是回调地址,如果有code。地址是:http://xxx.com/h5/?code=011NRLFa1aRx3A0Mx9Ia1LSDn13NRLFs&state=STATE
         if(empty($_GET['code'])){
         		//code为空就去获取code,这一步会授权,在下面的方法成功执行后会再次回到此方法,所以要先判断code是否为空
                 self::getCode();
            }else{
            	//已经授权,回调会走此方法,下面方法会获取用户资料
                $userInfo = self::getCodeUser();
                $data = User::getUser($userInfo);//执行添加用户信息并返回
                return redirect("/api/Home-index");
            }
    }
     // 存在就修改,不存在添加(用户)
    public static function getUser($data)
    {
        //获取本人信息,有就更新,没有就添加
        $info = User::where('openid',$data['id'])->first();
        if(empty($info)){
            //添加
            $userInfo['openid'] =$data['id'];
            $userInfo['avatar'] =$data['avatar'];
            $userInfo['name'] =$data['name'];
            User::create($userInfo);
        }else{
            //修改
            User::where('openid',$data['id'])->update(['avatar'=>$data['avatar'],'name'=>$data['name']]);
        }
       session(['userInfo'=>$info]);//存储到session
        return $data;
        
    }

因前端重构工程大,所以暂时搁置,代码没有测试完整,欢迎讨论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值