Error기록 노트/PHP | Laravel

[Laravel] 카카오(Kakao) 로그인 API 사용하는 방법(1): 구현 편

에러노트 2023. 4. 11. 19:14

이번에 새 프로젝트롤 하게 되면서 라라벨에서 카카오 API를 사용하는 방법을 기록해두고자 2편에 걸쳐 글을 쓰게 되었습니다.

구현과 연동을 나누어 작성하였기에 연동하는 방법만을 알아보고 싶은 분들은 연동 편을 참고하시기 바랍니다.

2023.04.11 - [독서노트/IT_공부장] - [Laravel] 카카오(Kakao) 로그인 API 사용하는 방법(2): 연동 편

저의 오류 기록뿐만 아니라 여러분들께도 미약하지만 도움이 되길 바랍니다 😉


우선 API를 사용하려면, 해당 공식 사이트 방문이 국룰이겠죠? kakao developers를 먼저 살펴봅시다.

로직 설명도 굉장히 세세하게 알려주네요.

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

저는 laravel Fortify, Jetstream, 그리고 API 사용의 핵심인 Socialite라는 친구를 통해 구현하였는데, 자세한 내용은 아래 공식 문서와 함께 카카오와 연동하는 깃헙글을 참고하시길 바랍니다.

(Foritify, jetstram은 선택사항입니다. 저는 유효성검사와 인증을 편하게 만들고자 사용하였다가 삽질때문에 중간에 빼버렸습니다ㅠ)

 

GitHub - SocialiteProviders/Kakao: [READ ONLY] Subtree split of the SocialiteProviders/Kakao Provider (see SocialiteProviders/Pr

[READ ONLY] Subtree split of the SocialiteProviders/Kakao Provider (see SocialiteProviders/Providers) - GitHub - SocialiteProviders/Kakao: [READ ONLY] Subtree split of the SocialiteProviders/Kakao ...

github.com

 

 

Installation & Usage | Socialite Providers

1. Installation You'll need to install the provider(s) you wish to use via composer, for example: 2. Service Provider Remove Laravel\Socialite\SocialiteServiceProvider from your providers[] array in config\app.php if you have added it already. Add \Sociali

socialiteproviders.com

 

Laravel에서 해당 방법을 쓰면  프로젝트 설치는 복잡하지만, 코드가 훨씬 간결해지는 것을 알 수 있었습니다. (사실 설치때문에..화가날 수 있기 떄문에 막 추천하진 않습니다🫠)

환경 설정을 좀 많이 설정해야 합니다.

먼저, composer require를 통해 설치합니다.

composer require socialiteproviders/zoho
composer require socialiteproviders/kakao

이후 composer.json에서 설치를 확인하신 뒤, config/services.php에 다음을 추가해줍니다.

'kakao' => [    
  'client_id' => env('KAKAO_CLIENT_ID'),  
  'client_secret' => env('KAKAO_CLIENT_SECRET'),  
  'redirect' => env('KAKAO_REDIRECT_URI') 
],

공식 문서와 깃헙을 번갈아가며 정독한 뒤 작성하시면 이해가 조금 되실 겁니다.

다음은 공식문서와 깃헙을 참고하여 Providers 부분을 조금 수정하여 작성하였습니다.

class EventServiceProvider extends ServiceProvider

protected $listen = [

    \SocialiteProviders\Manager\SocialiteWasCalled::class => [
        SocialiteProviders\\Zoho\\ZohoExtendSocialite::class.@'handle',
         \SocialiteProviders\Kakao\KakaoExtendSocialite::class.@'handle',
    ],
];

...

마지막으로 깃헙의 다음 구문을 전체를 복붙하여 작성해주면 됩니다.(전 너무 길어져서 축약하였습니다.)

class KakaoProvider extends AbstractProvider

...

protected function getTokenUrl()
    {
        return 'https://kauth.kakao.com/oauth/token';
    }
...

마지막으로 적용할 컨트롤러 부분에 다음과 같이 추가해준 뒤 부가적으로 유효성 검사 등을 추가해주었습니다.

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

 

다음엔 연동하는 방법과 함께 찾아오겠습니다. :)