[Laravel]  소셜로그인 구현

[Laravel] 소셜로그인 구현 updated_at: 2024-01-30 17:53

라라벨을 이용한 소셜로그인 구현

라라벨은 Laravel Socialite를 이용하여 다양한 소셜로그인을 제공한다.
이곳에서는 구현에 대한 간략한 설명을 할 것입니다.

google social login 을 보시려면 이 곳을 클릭해 주세요

Installation

composer require laravel/socialite

Configuration

소셜로그인을 사용하려면 OAuth providers 가 제공하는 credentials를 정의해 두어야 한다.

  • OAuth 1.0 : facebook, twitter
  • OAuth 2.0 : twitter-oauth-2, linkedin, google, github, gitlab, bitbucket

coinfig/services.php
github 의 OAUTH 를 아래와 같이 넣어 보자.

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => 'http://example.com/callback-url', // provider에 등록된 redirect url과 동일해야 함
],

GITHUB_CLIENT_ID 와 GITHUB_CLIENT_SECRET 가져오기

이곳을 참조하여 만드세요

.env 파일에 추가

GITHUB_CLIENT_ID=xxxxxxxxxxx
GITHUB_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

저는 github에서 Authorization callback URL 을
https://www.onstory.fun/auth/social/github/callback 로 잡았습니다.

라우팅

모든 세팅이 완료 되었으면 아래처럼 routing 정보를 잡으시면 됩니다.

// 로그인창 가져오기위한 라우터
Route::get('/auth/social/{provider}/redirect', 'SocialLoginController@redirectToProvider');

// 로그인 인증후 데이터를 제공해주는 라우터
Route::get('/auth/social/{provider}/callback', 'SocialLoginController@handleProviderCallback');

Controller 만들기

SocialLoginController.php

use App\Http\Controllers\Controller;
use Laravel\Socialite\Facades\Socialite;

class SocialLoginController extends Controller
{
    /**
    * 1. redirectToProvider() 프로바이더에 로그인요청
    */
    public function redirectToProvider($provider)
    {
		return Socialite::driver($provider)->redirect();
        // return Socialite::driver($provider)->scopes(['read:user', 'public_repo'])->redirect();
    }

    /**
    * 2. handleProviderCallback () 로그인한 후에 이미 만들어진 아이디인지 확인후 처리
    */
    public function handleProviderCallback($provider)
    {
        $socialUser = Socialite::driver($provider)->user();
        // $socialUser = Socialite::driver($provider)->stateless()->user();
        // $socialUser->name, $socialUser->getName()
        // $socialUser->email, $socialUser->getEmail()
        // $socialUser->token,

        \Log::info(json_encode($socialUser));
    }
}

Login 을 위한 HTML viewer 만들기

<a href="/auth/social/github/redirect">github login</a>

로그인창

Get Auth

평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글