首先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