coloredscience/laravel-auth

Colored ScienceProvider for Laravel Socialite

此软件包的官方仓库似乎已不存在,因此软件包已被冻结。

dev-master 2019-07-01 07:35 UTC

This package is auto-updated.

Last update: 2023-03-29 01:17:11 UTC


README

这是一个用于ColoredScience身份验证的Laravel Socialite的扩展提供者,它使用SocialiteProviders Manager

安装

composer require laravel/socialite
composer require coloredscience/laravel-auth

Colored User上创建您的应用程序以获取API密钥。

配置

  • config\services.php中添加一个可配置的服务以连接Laravel Socialite

        'coloredsci' => [
            'client_id' => env('CS_CLIENT_ID'),
            'client_secret' => env('CS_CLIENT_SECRET'),
            'redirect' => env('APP_URL').env('CS_REDIRECT'),
        ],
    
  • 如果您已经添加,请从config\app.php中的providers[]数组中删除Laravel\Socialite\SocialiteServiceProvider

  • 代替添加此提供者

        'providers' => [
            // a whole bunch of providers
            // remove 'Laravel\Socialite\SocialiteServiceProvider',
            \SocialiteProviders\Manager\ServiceProvider::class, // add
        ];
    
  • SocialiteProviders\Manager\SocialiteWasCalled事件添加到app/Providers/EventServiceProvider中的listen[]数组

  • 将Colored Science监听器添加到您刚刚创建的SocialiteProviders\Manager\SocialiteWasCalled[]

        protected $listen = [
            \SocialiteProviders\Manager\SocialiteWasCalled::class => [
                'ColoredScience\\LaravelAuth\\ColoredScienceExtendSocialite@handle',
            ],
        ];
    
  • 创建您的认证控制器以管理认证流程

        php artisan make:controller Auth\\CSAuthController
    
  • 注册您的认证路由

    Route::get('/login', 'Auth\CSAuthController@login' )->name( 'login' );
    Route::get('/callback', 'Auth\CSAuthController@handleCallback' )->name( 'callback' );
    Route::get('/logout', 'Auth\CSAuthController@logout' )->name( 'logout' )->middleware('auth');
    
  • 创建登录和注销函数以处理CS Socialite认证和注销,更多信息请参阅Laravel Socialite

        public function login()
        {
            return Socialite::with('coloredsci')->redirect();
        }
    
        public function logout()
        {
            \Auth::logout();
            return  \Redirect::intended('/');
        }
    
  • 创建回调函数以处理重定向回调,更多信息请参阅Laravel Socialite

        public function handleCallback()
        {
            $user = Socialite::driver('coloredsci')->user();
    
            //optional
            $authUser = $this->updateOrCreateUser($user);
            Auth::login($authUser, true);
            return redirect('/home');
        }
    
        //optional
        public function updateOrCreateUser($user) {
            return $authUser  = User::updateOrCreate(
                ['email' => $user->email],
                [
                    'fname' => $user->fname,
                    'lname' => $user->lname,
                    'nickname' => $user->nickname,
                    'avatar' => $user->avatar,
                    'phone' => $user->phone,
                    'email_verified_at' => $user->email_verified_at,
                ]
            );
        }
    

参考