- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동 - book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서) - 빈 폴더 제거 (journey/assets/*)
3.0 KiB
3.0 KiB
네이버 OAuth2 연동 구현 가이드
작성일: 2025-09-11
목적: 네이버 로그인 API 연동 절차 정리
1. 사전 준비
애플리케이션 등록
- 네이버 개발자 센터에서 앱 등록
- Client ID, Client Secret 발급
- 콜백 URL 정확히 등록 (URL 인코딩 필수)
- API 권한 관리에서 필요 항목 활성화 (미설정 시 403 오류)
2. OAuth2 흐름
Step 1: 사용자 인증 (Authorization Code)
GET https://nid.naver.com/oauth2.0/authorize
?response_type=code
&client_id={CLIENT_ID}
&redirect_uri={URL_ENCODED_CALLBACK}
&state={RANDOM_STATE}
주요 파라미터:
response_type: 항상 "code"state: CSRF 방어용 난수 (세션 저장 후 검증 필수)redirect_uri: 등록된 콜백과 정확히 일치
Step 2: 토큰 교환
GET/POST https://nid.naver.com/oauth2.0/token
?grant_type=authorization_code
&client_id={CLIENT_ID}
&client_secret={CLIENT_SECRET}
&code={AUTHORIZATION_CODE}
&state={STATE}
응답 데이터:
{
"access_token": "AAAAOLtM...",
"refresh_token": "c8ceMEJi...",
"token_type": "bearer",
"expires_in": 3600
}
Step 3: 사용자 프로필 조회
GET https://openapi.naver.com/v1/nid/me
Headers: Authorization: Bearer {ACCESS_TOKEN}
응답 구조:
{
"resultcode": "00",
"message": "success",
"response": {
"id": "32742776", // 앱별 고유 식별자
"email": "user@naver.com",
"name": "홍길동",
"nickname": "닉네임"
}
}
3. 토큰 관리
토큰 갱신
GET https://nid.naver.com/oauth2.0/token
?grant_type=refresh_token
&client_id={CLIENT_ID}
&client_secret={CLIENT_SECRET}
&refresh_token={REFRESH_TOKEN}
연동 해제
GET https://nid.naver.com/oauth2.0/token
?grant_type=delete
&client_id={CLIENT_ID}
&client_secret={CLIENT_SECRET}
&access_token={ACCESS_TOKEN}
&service_provider=NAVER
4. 구현 체크리스트
- 네이버 개발자 센터 앱 등록
- Client ID/Secret 환경변수 설정
- 콜백 URL 등록 및 인코딩 처리
- State 파라미터 생성/검증 로직
- Authorization 엔드포인트 리다이렉트
- 콜백 처리 및 code 교환
- Access Token으로 프로필 조회
- Refresh Token 갱신 로직
- 연동 해제 기능
5. 주의사항
- state 필수: CSRF 공격 방어, 세션 저장 후 검증
- redirect_uri: URL 인코딩 필수, 등록값과 정확히 일치
- 권한 설정: 개발자 센터에서 API 권한 미리 활성화
- 토큰 타입: Bearer 토큰 형식 준수
- 에러 처리: error, error_description 파라미터 확인
6. 에러 코드
| 코드 | 설명 | 해결방법 |
|---|---|---|
| 403 | 권한 없음 | API 권한 관리에서 활성화 |
| 401 | 인증 실패 | 토큰 만료 확인, 갱신 필요 |
| 024 | 잘못된 인증 | state 불일치, CSRF 체크 |
참고: 네이버는 외부 로그아웃 API 미제공, scope 파라미터 불필요 (동의 화면에서 처리)