使用 laravel socialite 开发第三方登陆
首先上官方连接,找驱动也是在这里找 [点击这里] [new]
下面以安装 QQ 第三方登陆为例
安装 laravel socialite 的QQ驱动
自带的有 github facebook 等几个
composer require socialiteproviders/qq
添加 服务
修改 config/app.php
文件
在 providers 键下 添加 \SocialiteProviders\Manager\ServiceProvider::class
如果添加了上面的服务就不需要重复添加了,如果添加了 Laravel\Socialite\SocialiteServiceProvider::class
就删除掉。
样例
'providers' => [
// 'Laravel\Socialite\SocialiteServiceProvider::class', // 如果有 就删除这行
\SocialiteProviders\Manager\ServiceProvider::class, // 这里是添加的 如果有 就不用添加
];
添加 监听器
修改 app\Providers\EventServiceProvider.php
文件
protected $listen = [
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
// 这里是添加的 QQ登陆 如果有其他的 继续在下面添加即可
'SocialiteProviders\\QQ\\QqExtendSocialite@handle',
],
];
配置文件
修改 config/services.php
文件
按照以下配置添加即可
// 注意 这里的键名。
'qq' => [
'client_id' => env('QQ_KEY'),
'client_secret' => env('QQ_SECRET'),
'redirect' => env('QQ_REDIRECT_URI')
],
使用
添加控制器
php artisan make:controller OauthController
写两个方法 前台调用(redirectToProvider) 和 第三方返回调用(handleProviderCallback)
内容如下:
public function redirectToProvider ($service = '')
{
return Socialite::with($service)->redirect();
}
public function handleProviderCallback($service)
{
$user = Socialite::driver('QQ')->user();
$accessTokenResponseBody = $user->accessTokenResponseBody;
// 处理接下来的逻辑
}
添加路由
Route ::get('auth/{service}_callback', 'OAuthController@handleProviderCallback') -> name('app.oauth.callback');
Route ::get('auth/{service}', 'OAuthController@redirectToProvider') -> name('app.oauth.redirect');
评论已关闭