L

Laravel 使用 laravel socialite 第三方登陆

xyj2156 PHP 2019-01-07

使用 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');

PREV
记录学习 JavaScript 二叉树
NEXT
php 操作 sqlite

评论(0)

评论已关闭