laravel实现QQ登录

环境配置:

laravel 5.5

centos7.2

php7.1

参考文章

laravel实现第三方登录(qq登录) 

最近刚学习了laravel这个框架,感觉特别好用,于是用laravel写了一个自己的网站,登录用的是laravel自带的用户认证,由于我平时登录别的网站时喜欢使用第三方登录,于是想自己写个第三方登录玩一下,分别申请了QQ和微信的第三方平台,微信太坑了,明明是个人开发者,在申请表上居然还要盖章,我又没有自己的章,上哪盖去。 QQ的应用很容易就通过了,于是就先写个QQ登录试一下。

1.在QQ互联上创建应用,获得APP ID和APP Key并设置好QQ登录的回调地址

登录之后点击应用管理就可以创建应用啦,当然如果你不是开发者还得先申请成为开发者 ,点击右上角的头像就能够申请了

点击创建应用,我创建的是网站应用

之后填写这个表格就可以了,这个地方注意了网站名称跟简介最好跟你这个网站进行备案的时候填的信息一致,否则有可能审核不通过,会说你跟备案信息不一致

审核很快的,审核通过以后就可以看到你的APP ID和APP Key了,并且需要设置你的回调地址,这里注意了,回调地址一旦设定好就不能改了,所有要谨慎设置你的回调地址

2.开始在laravel上引入第三方组件并配置路由和控制器

首先composer安装组件

composer require socialiteproviders/qq

打开config/app.php文件,注册服务提供者,如果用了laravel自带的社会化登陆要先注释掉

'providers' => [
    SocialiteProviders\Manager\ServiceProvider::class, // 添加
];

在该文件下方的aliases中添加这样一行

'aliases'=>[
    'Socialite' => Laravel\Socialite\Facades\Socialite::class, //添加
]

打开app/Providers/EventServiceProvider.php,添加事件监听器

protected $listen = [
	'SocialiteProviders\Manager\SocialiteWasCalled' => [  
		'SocialiteProviders\QQ\QqExtendSocialite@handle', 
	],                                                    
];

在config/services.php中添加

'qq' => [
	'client_id' => env('QQ_KEY'),
	'client_secret' => env('QQ_SECRET'),
	'redirect' => env('QQ_REDIRECT_URI'),
],

在.env文件中添加

QQ_KEY=APP ID          
QQ_SECRET=APP KEY
QQ_REDIRECT_URI= http://www.example.com/qq       //你设置的回调地址

为QQ登陆设置对应的路由,切记QQ登陆的路由不要放到带有auth中间件的路由组中,否则无法绕过auth自带的验证进行QQ登陆

Auth::routes();
Route::middleware('auth')->group(function (){
	Route::any('/', 'HomeController@index')->name('home');
});
Route::get('/qq','QQController@qq');    //进行qq登录的路由
Route::get('/qqlogin','QQController@qqlogin');   //授权回调的路由

对应的控制器方法

public function qq(){
	return Socialite::with('qq')->redirect();
}

public function qqlogin(){
	$user = Socialite::driver('qq')->stateless()->user();
	var_dump($user);
	if(!User::where('name',$user->nickname)){
		$cur_user = User::create([
			'name'=>$user->nickname,
			'email'=>'',
			'password'=>'',
			'remember_token'=>Str::random(60)
		]);
	}else{
		$cur_user=User::where('name',$user->nickname)->first();
	}
	Auth::login($cur_user);
	return redirect('/home');
}

ok,这样就可以进行QQ登陆了,当然微信登陆,微博登陆都是一样的,这个包里面也有对应的方法

欢迎关注「不出户」公众号 

在公众号回复「python」,获取全套python学习资源。

在公众号回复「vue」,领取vue核心教程

在公众号回复「react」,领取react全套教程

在公众号回复「angular」,领取angular学习资源

在公众号回复「算法」,领取算法学习教程

在公众号回复「nodejs」,领取nodejs学习教程,更有更多精品资源敬请期待

欢迎关注不出户,让你足不出户爱好学习

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木豪末

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值