카카오디벨로퍼스는 카카오 로그인 기능을 체험해볼 수 있도록 샘플 코드를 제공합니다. 이 튜토리얼은 개발 환경 설정부터, 코드 실행, 테스트 안내까지 단계별로 설명합니다.
구분 | 내용 |
---|---|
선행 작업 | 카카오디벨로퍼스 계정 및 앱 생성 (참고: 카카오 API 시작하기) |
구현 결과 | 카카오 로그인, 로그아웃, 연결 끊기, 로그인한 사용자 정보를 조회하는 기능을 테스트할 수 있는 웹페이지 구성 (참고: 테스트 웹페이지 화면) |
샘플 코드를 실행하려면 개발 도구와 사용할 언어에 필요한 소프트웨어를 먼저 설치해야 합니다. 사용하려는 언어의 설치 요구사항을 참고해 필요한 준비를 완료합니다.
항목 | 설명 |
---|---|
명령줄 인터페이스 (CLI) | 명령어를 입력하고 실행하는 창 각 운영체제에 내장되어 별도 설치 불필요 MacOS: 터미널 Windows: 명령 프롬프트 또는 PowerShell |
코드 편집기 (IDE) | 환경 설정 수정과 코드 작성에 필수적인 도구, 내장 터미널 제공 Visual Studio Code, Cursor 등 원하는 도구 설치 필요 |
샘플 코드를 실행하려면 사용하는 언어와 관련 도구가 설치되어 있어야 합니다.
터미널에 아래 명령어를 입력해 설치 여부를 확인합니다. 사용하려는 언어 또는 도구에 해당하는 명령어를 입력했을 때, 버전 정보가 출력되면 설치가 완료된 것입니다.
# Node.js를 사용하는 경우
node -v
npm -v
# PHP를 사용하는 경우
php -v
# Python을 사용하는 경우
python3 --version
샘플 코드를 이용하려면 안내된 버전 이상으로 설치해야 합니다.
언어 | 필수 설치 항목 및 버전 |
---|---|
Node.js | Node.js 18.x 이상, npm 9.x 이상, Express 4.18.x 이상, axios 1.6.x 이상 |
PHP | PHP 7.4 이상 권장, 내장 서버 사용 가능 |
Python | Python 3.7 이상, pip |
버전 정보가 출력되지 않으면 아래 표를 참고해 해당 언어를 설치합니다.
대상 | 설치 방법 |
---|---|
Node.js | macOS: - Homebrew가 설치된 경우: brew install node - Homebrew가 없는 경우: Node.js 공식 사이트에서 macOS 설치 파일 다운로드 및 실행 Windows: - Node.js 공식 사이트에서 Windows 설치 파일(.msi) 다운로드 및 실행 설치 후 npm 도 함께 설치됨 |
PHP | macOS: - Homebrew가 설치된 경우: brew install php - Homebrew가 없는 경우: PHP 공식 사이트에서 macOS 설치 파일 다운로드 및 실행 Windows: - PHP 공식 사이트에서 Windows 설치 파일(.zip) 다운로드 및 압축 해제 - 또는 XAMPP와 같은 통합 패키지 설치 |
Python | macOS: - Homebrew가 설치된 경우: brew install python - Homebrew가 없는 경우: Python 공식 사이트에서 macOS 설치 파일(.pkg) 다운로드 및 실행 Windows: - Python 공식 사이트에서 Windows 설치 파일(.exe) 다운로드 및 실행 - 설치 시 "Add Python to PATH" 옵션 체크 권장 |
설치가 완료된 후, 설치 여부 확인 명령어를 다시 입력해 정상적으로 설치되었는지 확인합니다.
새 프로젝트 폴더를 생성 후, 생성한 폴더로 이동하기 위해 터미널에 아래 명령어를 차례로 입력합니다. 이 튜토리얼에서는 kakao-test 폴더에서 설정 파일과 코드 파일을 생성할 예정입니다.
mkdir kakao-test
cd kakao-test
이 튜토리얼과 카카오 로그인 구현하기에서 사용된 샘플 코드는 아래 GitHub 저장소에서 다운로드할 수 있습니다.
언어 | 저장소 |
---|---|
Node.js | GitHub |
PHP | GitHub |
Python | GitHub |
언어별 GitHub 저장소에서 [Code] > [Download ZIP] 버튼을 클릭해 ZIP 파일을 다운로드합니다. 다운로드한 파일을 압축을 해제한 후, 코드 편집기에서 해당 폴더를 엽니다.
또는 터미널에서 아래 Git 명령어로 레파지토리를 복제(Clone)한 후, 해당 프로젝트 폴더로 이동합니다. (참고: GitHub 공식 문서) 이 방법을 사용하려면 Git을 설치해야 합니다.
git clone https://github.com/kakao-tam/developers-node.js.git
cd developers-node.js
git clone https://github.com/kakao-tam/developers-php.git
cd developers-php.git
git clone https://github.com/kakao-tam/developers-python.flask.git
cd developers-python.flask
필요한 외부 라이브러리를 설치합니다. 설치하지 않으면 코드 실행 시 모듈을 찾을 수 없다는 오류가 발생할 수 있습니다.
npm install
터미널에서 위 명령어를 실행하면 package.json 파일에 명시된 모든 의존성을 자동으로 설치하며, node_modules 폴더가 생성됩니다. 이 과정이 완료되어야 코드가 정상적으로 실행됩니다.
PHP는 추가 패키지 설치 없이 실행 가능합니다. file_get_contents 또는 curl 함수가 기본 포함됩니다. 필요 시 Composer로 의존성을 관리할 수도 있습니다.
pip install -r requirements.txt
이 단계에서는 카카오 로그인 기능을 사용하기 위해 카카오디벨로퍼스에서 설정해야 하는 사항을 안내합니다.
카카오 API를 사용하려면 먼저 카카오디벨로퍼스 앱을 생성해야 합니다.
앱 생성 방법은 카카오 API 시작하기를 참고합니다.
카카오 로그인을 사용하려면, 로그인 후 인가 코드가 전달될 주소(리다이렉트 URI)를 등록해야 합니다.
[카카오 로그인] > [Redirect URI]에서 리다이렉트 URI를 등록합니다. 튜토리얼에서는 아래 값을 사용하지만, 필요에 따라 자유롭게 등록할 수 있습니다.
언어 | 등록할 리다이렉트 URI |
---|---|
Node.js | http://localhost:4000/redirect |
PHP | http://localhost:4000/api.php?action=redirect |
Python | http://localhost:4000/redirect |
카카오가 API로 사용자 정보에 접근하려면 사용자의 동의가 필요합니다. 사용자 동의를 위해 동의항목을 설정합니다.
비활성화되어 있는 동의항목과 동의 단계를 설정하려면 앱 권한 신청이 필요합니다.
이 튜토리얼에서는 아래와 같이 동의항목을 설정하겠습니다.
동의항목 | 동의 단계 | 동의 목적 |
---|---|---|
닉네임 | 필수 동의 | 사용자 식별 |
프로필 사진 | 선택 동의 | 사용자 식별 |
카카오 서비스 내 친구 목록 | 이용 중 동의 [선택 동의]로 설정하려면 앱 권한 신청 필요 |
친구 초대 및 소셜 기능 제공 |
코드 편집기(IDE)에서 kakao-test 폴더를 엽니다. 프로젝트 설정하기 단계에서 수행한 설정이 반영된 폴더를 확인할 수 있습니다.
각 언어별 설정 파일에서 사용할 앱 정보를 입력합니다.
위의 설정 파일을 열어 client_id
값에 내 앱의 REST API 키를 입력합니다. 나머지 변수는 샘플 코드 값을 그대로 사용해도 됩니다.
변수 | 설명 |
---|---|
client_id |
앱 키에서 확인한 REST API 키 |
domain |
서버로 사용할 도메인 주소 (예: http://localhost:4000 ) 중요: 테스트용 코드에는 HTTP 도메인이 사용되었으나, 실제 서비스 운영 시에는 보안 인증서를 적용한 HTTPS 사용을 권장 |
redirect_uri |
등록한 리다이렉트 URI (예: http://localhost:4000/redirect ) |
client_secret |
클라이언트 시크릿 코드 사용 시 설정 필요 (선택) 보안을 강화하기 위해 사용을 권장 (예: client_secret=xKsfEDskdHdkxYdkx***** ) |
//app.js
const client_id = "6f95e7e3146********"; // 앱의 REST API 키 입력로 교체
// const client_secret = " this is client secret key ";
const domain = "http://localhost:4000";
const redirect_uri = `${domain}/redirect`;
const token_uri = "https://kauth.kakao.com/oauth/token";
const api_host = "https://kapi.kakao.com";
// api.php
$client_id = '6f95e7e3146********'; // 앱의 REST API 키 입력로 교체
// $client_secret = ' this is client secret key ';
$domain = 'http://localhost:4000';
$redirect_uri = $domain . '/api.php?action=redirect';
$kauth_host = 'https://kauth.kakao.com';
$kapi_host = 'https://kapi.kakao.com';
# api.py
client_id = "6f95e7e3146********" # 앱의 REST API 키 입력로 교체
# client_secret = " this is client secret key "
domain = "http://localhost:4000"
redirect_uri = domain + "/redirect"
kauth_host = "https://kauth.kakao.com"
kapi_host = "https://kapi.kakao.com"
터미널을 열어 복제한 폴더로 이동 후, 서버를 실행하는 명령어를 입력합니다.
cd developers-node.js
npm start
cd developers-php
php -S localhost:4000
cd developers-python.flask
python api.py
아래 예시와 같이 터미널에 나타나는 웹 브라우저 주소로 접속합니다.
> kakao-test@1.0.0 start
> node app.js
Server is running at http://localhost:4000
PHP 8.4.7 Development Server (http://localhost:4000) started
* Running on all addresses.
WARNING: This is a development server. Do not use it in a production deployment.
* Running on http://172.12.34.5:4000/ (Press CTRL+C to quit)
:
웹 브라우저에 접속하면 아래와 같은 테스트 웹페이지를 확인할 수 있습니다. 페이지는 아래와 같이 구성돼 있습니다.
구분 | 설명 |
---|---|
로그인 버튼 영역 | 카카오계정으로 로그인할 수 있는 버튼 중요: 이 튜토리얼에서 안내한 과정만 수행 시 [JavaScript SDK] 버튼은 동작하지 않음, 테스트하려면 JavaScript SDK 설치 및 초기화 필요 |
기본 기능 버튼 영역 | 프로필 조회, 로그아웃, 연결 끊기 API 호출 버튼 제공 |
응답 확인 영역 | 카카오 API 응답 결과가 JSON 형식으로 표시됨 |
추가 기능 버튼 영역 | 친구 목록 조회, 나에게 메시지 전송, 친구에게 메시지 전송 버튼 중요: 이 튜토리얼에서 안내한 과정만 수행 시 동작하지 않음, 관련 튜토리얼은 추후 제공 예정 친구 목록을 가져오려면 카카오톡 소셜 사용 권한 신청 필요 친구에게 메시지를 보내려면 카카오톡 메시지 사용 권한 신청 신청 필요 |
[카카오계정으로 로그인] 버튼을 누르면 카카오 로그인 구현하기 > 3-3. 인가 코드 받기 코드가 실행되어 카카오 로그인 화면이 나타납니다.
본인의 카카오계정으로 로그인 후, 동의화면에서 동의하면 3-4. 액세스 토큰 요청 및 세션 저장하기 코드가 실행되고, 테스트 웹페이지로 돌아옵니다. 만약 에러가 발생한 경우, 문제 해결을 참고합니다.
[프로필 조회] 버튼을 누르면 카카오 로그인 구현하기 > 3-5. 로그인한 사용자 정보 가져오기 코드가 실행됩니다.
요청 성공 시, [응답 확인 영역]에서 카카오 API 서버가 보낸 사용자 정보를 확인할 수 있습니다. 사용자의 동의 여부에 따라 일부 응답 필드는 제공되지 않을 수 있습니다. 즉, 사용자가 제공에 동의한 사용자 정보만 제공됩니다.
요청에 실패하거나 오류가 발생한 경우, 에러 메시지도 함께 표시됩니다. 에러 발생 시 문제 해결에서 원인을 파악할 수 있습니다.
{
// 서비스에서 사용자를 구분하기 위한 회원번호
"id": 123456789,
// 카카오 로그인으로 사용자가 앱과 연결된 시간
"connected_at": "2023-10-01T12:34:56Z",
"properties": {
"nickname": "홍길동",
"profile_image": "http://.../profile.jpg",
"thumbnail_image": "http://.../thumb.jpg"
},
// 카카오계정에 저장된 사용자 정보
"kakao_account": {
"email": "hong@example.com",
"profile": {
"nickname": "홍길동",
"profile_image_url": "http://.../profile.jpg"
}
}
}
[로그아웃] 버튼을 누르면 사용자의 액세스 토큰을 만료시키며, 사용자는 앱에서 로그아웃됩니다. 단, 카카오계정으로 로그인한 웹브라우저의 로그인 세션은 유지됩니다.
연결 끊기를 테스트하기 위해 다시 로그인 합니다. [연결 끊기] 버튼을 누르면 카카오 로그인 구현하기 > 3-6. 로그아웃 및 연결 끊기 구현하기 코드가 실행되어 앱과 사용자 계정의 연결이 해제됩니다.
로그아웃과 달리, 연결이 끊어진 후 재로그인을 시도하면 동의 화면이 나타나며 사용자는 앱에 다시 연결(가입)할 수 있습니다.