Laravel에서 Socialite 패키지를 사용하는 방법

8972 단어 laravelphpoauth
오늘날 많은 사이트에서 OAuth2 인증을 사용하므로 사용자는 Google, Facebook, Microsoft 등의 계정으로 인증할 수 있습니다.

OAuth 2.0은 타사 애플리케이션이 웹 서비스에 액세스할 수 있도록 하는 인증 프레임워크입니다. 웹 및 모바일 애플리케이션이 점점 더 민주화됨에 따라 서로 다른 애플리케이션이 서로 상호 작용할 가능성이 높습니다. 예를 들어 웹사이트 A는 알려진 소셜 네트워크의 데이터를 사용하여 사용자를 등록할 수 있습니다.

따라서 사용자는 소셜 네트워크에서 이미 사용 가능한 자신의 개인 정보에 대한 액세스를 웹사이트 A에 제공하는 것을 허용합니다.

다음은 OAuth2에 대한 간략한 요약입니다. 자세한 내용은 다른 기사에서 설명하겠습니다.

이제 OAuth2에 대해 조금 더 알게되었으므로 이를 Laravel 애플리케이션에 통합하는 방법을 보여드리겠습니다. 애플리케이션에 통합하기 위해 복잡한 것은 없습니다. Laravel의 document에 표시된 Socialite 패키지를 사용하기만 하면 됩니다.

Laravel 애플리케이션에서 OAuth2를 사용하기 위해 따라야 할 단계는 다음과 같습니다.

패키지 설치 및 구성:



1. 설치 :



먼저 이 명령을 실행하여 공급자를 설치합니다(예: Github).

composer require socialiteproviders/github


2. 서비스 제공자 :


config/app.php에서 \SocialiteProviders\Manager\ServiceProvider::classproviders[] 배열에 추가하고 이미 추가한 경우 Laravel\Socialite\SocialiteServiceProvider에서 providers[]를 제거합니다.

예를 들어 :

'providers' => [
    // a whole bunch of providers
    // remove 'Laravel\Socialite\SocialiteServiceProvider',
    \SocialiteProviders\Manager\ServiceProvider::class, // add
];


3. 이벤트 리스너


  • SocialiteProviders\Manager\SocialiteWasCalled 이벤트를 listen[]app/Providers/EventServiceProvider 배열에 추가합니다.
  • 방금 생성한 SocialiteProviders\Manager\SocialiteWasCalled[]에 리스너(즉, 공급자의 리스너)를 추가합니다.
  • 제공자에 대한 수신기를 배열에 추가합니다. 이 예에서 이것은 \SocialiteProviders\GitHub\GitHubExtendSocialite::class.'@handle', 입니다.

  • protected $listen = [
        \SocialiteProviders\Manager\SocialiteWasCalled::class => [
            // ... other providers
            \SocialiteProviders\GitHub\GitHubExtendSocialite::class.'@handle',
        ],
    ];
    


    4. 구성



    Socialite를 사용하기 전에 애플리케이션에서 사용하는 OAuth 공급자에 대한 자격 증명을 추가해야 합니다. 이러한 자격 증명은 인증할 서비스의 대시보드 내에서 "개발자 애플리케이션"을 생성하여 검색할 수 있습니다.

    그런 다음 config/services.php 파일에 자격 증명을 추가합니다.

    'github' => [
        'client_id' => env('GITHUB_CLIENT_ID'),
        'client_secret' => env('GITHUB_CLIENT_SECRET'),
        'redirect' => 'http://example.com/callback-url',
    ],
    


    5. 애플리케이션에서의 사용



    이제 사용할 수 있습니다(파사드 설치 프로그램이 있다고 가정).

    return Socialite::driver('github')->redirect();
    


    laravel documentation에서 OAuth 공급자로 사용자를 인증하려면 두 개의 경로가 필요합니다. 하나는 사용자를 OAuth 공급자로 리디렉션하기 위한 경로이고 다른 하나는 인증 후 공급자로부터 콜백을 수신하기 위한 경로입니다.

    use Laravel\Socialite\Facades\Socialite;
    
    Route::get('/auth/redirect', function () {
        return Socialite::driver('github')->redirect();
    });
    
    Route::get('/auth/callback', function () {
        $user = Socialite::driver('github')->user();
    
        // $user->token
    });
    


    6. 인증 및 저장



    사용자가 OAuth 제공자로부터 검색되면 애플리케이션의 데이터베이스에서 사용자가 종료되는지 확인하고 사용을 인증할 수 있습니다. 그가 데이터베이스에 없으면 사용자를 나타내는 새 레코드를 만듭니다.

    use App\Models\User;
    use Illuminate\Support\Facades\Auth;
    use Laravel\Socialite\Facades\Socialite;
    
    Route::get('/auth/callback', function () {
        $githubUser = Socialite::driver('github')->user();
    
        $user = User::updateOrCreate([
            'github_id' => $githubUser->id,
        ], [
            'name' => $githubUser->name,
            'email' => $githubUser->email,
            'github_token' => $githubUser->token,
            'github_refresh_token' => $githubUser->refreshToken,
        ]);
    
        Auth::login($user);
    
        return redirect('/dashboard');
    });
    


    이제 애플리케이션에 OAuth2 인증을 추가했습니다. 주저하지 말고 Laravel docpackage doc을 살펴보고 모든 가능성을 확인하십시오.

    좋은 웹페이지 즐겨찾기