花颜诱人醉-程序员客栈

laravel 对接QQ登录

发布时间:2019-08-08 15:45:26作者:花颜诱人醉浏览数: 635评论数:

首先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登陆了,当然微信登陆,微博登陆都是一样的,这个包里面也有对应的方法

--------------------- 

版权声明:本文为CSDN博主「木豪末」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/github_37673306/article/details/84860358




友情连接