[laravel] Socialite - Naver
Socialite - Naver
laravel/socialite 는 편안한 기능을 제공하지만 아쉽게도 Naver나 Kakao의 social login을 제공하지는 않는다.
그러나 Socialite Providers 는 다양한 social login을 제공하여 편안하게 사용할 수가 있다
Socialite Providers 는 laravel/socialite 와 완전히 다른 것이 아니라 laravel/socialite 를 이용하여 추가적인 Provider 만 제공하고 있음을 명시하여야 한다.
그러므로 기본적인 세팅은 laravel/socialite 와 동일하다.
Install
composer require socialiteproviders/naver
client_id 및 client_secret 획득
애플리케이션 등록(API 이용 신청)
- 사용 API : 네이버 로그인
- 환경 추가: PC 웹
- Callback URL : YourDomain/auth/social/naver/callback
작업이 완료되면 Naver 용 lient Id 와 Client Secret가 생성됩니다.
환경설정
.env
NAVER_CLIENT_ID=[Naver Client Id]
NAVER_CLIENT_SECRET=[Naver Client Secret]
config/services.php
'naver' => [
'client_id' => env('NAVER_CLIENT_ID'),
'client_secret' => env('NAVER_CLIENT_SECRET'),
'redirect' => 'https://YourDomain/auth/social/naver/callback',
],
app/Providers/EventServiceProvider.php
$listen에 아래를 추가한다.
protected $listen = [
..........
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
'SocialiteProviders\Naver\NaverExtendSocialite@handle'
],
];
소셜로그인 구현
blade
<a href='/auth/social/naver/redirect'>Naver</a>
route
Route::get('/auth/social/{provider}/redirect', 'Social\AuthenticatedSessionController@redirectToProvider');
Route::get('/auth/social/{provider}/callback', 'Social\AuthenticatedSessionController@handleProviderCallback');
controller
- AuthenticatedSessionController
use Laravel\Socialite\Facades\Socialite;
..........
class AuthenticatedSessionController extends Controller
{
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
public function handleProviderCallback($provider)
{
$socialUser = Socialite::driver($provider)->stateless()->user();
// $socialUser 를 이용하여 db 작업 및 기타 작업 완료
}
}