天天看点

Laravel配合EasyWehcat,3分钟搞定扫码登陆

1.首先,你要去微信开放平台https://open.weixin.qq.com/,去申请一个网站应用,网站应用是单独的一个应用,和公众号是不同的!

2.申请成功后,在网站应用这里,获取到APPID和SECRET,还要记住我们的回调域名,这里假设回调域名是http://abc.com,如图所示:

Laravel配合EasyWehcat,3分钟搞定扫码登陆

3.制作处理扫描二维码后的方法,获取用户信息,假设,下面所示的方法路径是http://abc.com/do_wxlogin

public function doWxLogin(){
        
        $app = new Application([  
            'app_id'  => '你刚才获得的APPID',         // AppID
            'secret'  => '你刚才获得的SECRET', 
            'oauth' => [                             //oauth这里面就写一个scopes就行 
                'scopes'  =>['snsapi_login'],  
            ]  
        ]);
        // dd($app);
        $user = $app->oauth->user();
        //这里可以通过dd($user);打印出来用户所有的信息了
        //获取具体信息,可以使用数组的方式
        $unionid = $user['original']['unionid'];
        $openid = $user['original']['openid'];
        //dd("unionid=".$unionid.";openid=".$openid);
        //成功拿到用户信息,大功告成
        //接下来,就要写你的用户免密码登陆方式了,这里推荐使用Laravel自带的Auth方式登陆用户
        //先判断该用户有没有
        //1:如果是创建了新用户,可以直接登陆他:
        //$user = User::create([用户的各种信息]);
        //Auth::login($user);
        //2:如果已经有该用户,可以使用login方式
        //$user = User::find([id here]);
        //通过这种方式找到用户
        //Auth::login($user);
        
        // 如果ID是主键,直接这样也可以登陆
        // Auth::loginUsingId([id of user]);

    }           

4.制作前端二维码页面,直接复制即可,注意redirect_uri填的是我们上面这个方法的路径,而且,这个域名必须是你授权回调域下头的域名,假设我的授权回调域是http://abc.com,那么redirect_uri就要填http://abc.com/xxxx

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<div id="qrCode">
 	
</div>
<script src="JQUERY文件的地址,这里改一下"></script>
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
<script>

        var obj = new WxLogin({
            id: "qrCode",
            appid: "你刚才获取的APPID",
            scope: "snsapi_login",
            redirect_uri: "你的授权域名里面,处理扫码回调的路径,例如http://abc.com/do_wxlogin",
            href: '',
            state: "<?php echo time(); ?>",
            style:'black',
        });

 
 
</script>

</body>
</html>           

5.制作完成,打开页面,扫码,看看是否拿到了自己的信息吧~