네이버 로그인
1. 개요
동의한 사용자 정보 조회
이름, 이메일, 별명, 생일, 연령대, 성별 등의 사용자 정보 조회 가능
간편한 운영
환경별 로그인, 누적 사용자 통계 제공
2. 네이버 로그인 서비스 소개
2.1. 제공하는 기능
소셜 로그인
로그인 연동 회원 프로필 조회
이름, 이메일, 별명, 프로필 사진, 생일, 연령대, 성별 정보
네이버의 로그인 오픈 API 이용 (네이버 서비스 이용)
서비스 이용 통계 제공
네이버 로그인 뱃지
3. 네이버 로그인 적용
3.1. 네이버 로그인 적용 전 점검 사항
3.1.1. 애플리케이션 등록
먼저 ‘Application-애플리케이션 등록’ 메뉴에서 애플리케이션을 등록해야 한다.
3.1.2. 필수 항목 확인
애플리케이션 이름은 명확하고 간결하게 작성
애플리케이션 이름은 “의미를 알수 없는 문자” 또는 “서비스와 관련없는 이름” 사용하지 않는다.
로고 이미지는 규격을 준수하며 서비스를 대표할 수 있는 이미지로 설정
사용 API에 “네이버 로그인”을 반드시 선택해야 한다. 로그인 오픈 API 서비스 환경은 반드시 1개 이상 선택한다.
웹 서비스 환경에서는 서비스의 대표 URL이 입력되어야 한다.
애플리케이션 환경에서는 AppScheme와 package name을 정확하게 입력이 되어야 한다.
3.1.3. 사전 검수 요청
실제 서비스에 적용하고자 한다면 애플리케이션 검수 요청을 등록해야 한다.
3.2. 네이버 로그인 버튼 적용 가이드
네이버 로그인 SDK를 이용해 개발
네이버 로그인 버튼 이미지
3.3. 회원 정보 확인 및 기존 회원과의 연동
3.3.1. 네이버 로그인 회원의 프로필 정보
네이버 로그인 성공시 접근 토큰을 얻는다.
접근 토큰을 이용하여 사용자 정보를 조회할 수 있다.
사용자 정보
이용자 식별자 : 64자 이내로 구성된 BASE64 형식의 문자열
(2021년 5월 1일 이후 생성된 애플리케이션부터 적용. 기존 INT64 규격의 숫자)
이름 : 10자 이내로 구성된 문자열
닉네임 : 20자 이내로 구성된 문자열
프로필 이미지 : 255자 이내로 구성된 URL 형태의 문자열
연락처 이메일 주소 : 이메일 규격의 문자열
생일 : 월-일 (MM-DD) 형태의 문자열
연령대 : 연령 구간에 따라 0-9 / 10-19 / 20-29 / 30-39 / 40-49 / 50-59 / 60- 으로 표현된 문자열
성별 : M/F (남성/여성) 으로 표된 문자
출생연도 : 연(YYYY) 형태의 문자열
휴대전화번호 : 대쉬(-)를 포함한 휴대전화번호 문자열
각 항목별로 필수 제공 항목과 추가 제공 항목 중에 선택할 수 있다.
3.4. 네이버 로그인 연동 개발하기
3.4.1. 네이버 로그인 연동을 개발하기에 앞서
네이버 개발자센터를 통해 애플리케이션을 등록해야 한다.
등록한 후에 애플리케이션의 Client ID와 Client Secret 값을 확인할 수 있다.
ClientID와 ClientSecret에 대하여
ClientID와 ClientSecret은 애플리케이션을 구분해주는 정보이다.
ClientID : 알파뱃 대소문자, 숫자가 조합된 40자리 이하의 문자열
ClientSecret : 알파뱃 대소문자, 숫자가 조합된 40자리 이하의 문자열
3.4.2. 네이버 로그인 연동 URL 생성하기
‘네이버 로그인’ URL을 먼저 생성해야 한다.
사용자가 로그인 연동에 동의하였을 경우 동의 정보를 포함하여 Callback URL로 전송된다.
요청 URL 정보
메서드 : GET / POST
출력 포맷 : URL 리다이렉트
설명 : 네이버 로그인 인증 요청
네이버 로그인 연동 API
요청 URL 정보
요청 변수 정보
response_type
string
Y
code
인증 과정에 대한 내부 구분값으로 ‘code’로 전송해야 함
client_id
string
Y
-
애플리케이션 등록 시 발급받은 Client ID 값
redirect_uri
string
Y
-
애플리케이션을 등록 시 입력한 Callback URL 값으로 URL 인코딩을 적용한 값
state
string
Y
-
사이트 간 요청 위조 (cross-site request forgery) 공격을 방지하기 위해 애플리케이션에서 생성한 토큰값으로 URL 인코딩을 적용한 값을 사용
요청문 샘플
3.4.3. 네이버 로그인 연동 결과 Callback 정보
네이버 로그인 인증 요청 API를 호출했을 때 사용자가 네이버로 로그인하지 않은 상태이면 네이버 로그인 화면으로 이동하고, 사용자가 로그인한 상태이면 기본 정보 제공 동의 확인 화면으로 이동한다.
정보 제공 동의 과정이 완료되면 콜백 URL에 code 값과 state 값이 URL 문자열로 전송된다.
code 값은 접근 토큰 발급 요청에 사용한다.
API 요청 실패시에는 에러 코드와 에러 메시지가 전송된다.
Callback 응답 정보
API 요청 성공시 : http://콜백URL/redirect?code={code값}&state={state값}
code
string
네이버 로그인 인증에 성공하면 반환받는 인증 코드, 접근 토큰(access token) 발급에 사용
state
string
사이트 간 요청 위조 공격을 방지하기 위해 애플리케이션에서 생성한 토큰값으로 URL 인코딩을 적용한 값
error
string
네이버 로그인 인증에 실패하면 반환받는 에러 코드
error_description
string
네이버 로그인 인증에 실패하면 반환받는 에러 메시지
3.4.4. 접근 토큰 발급 요청
Callback으로 전달받은 정보를 이용하여 접근 토큰을 발급받을 수 있다.
접근 토큰은 사용자가 인증을 완료했다는 것을 보장할 수 있는 인증 정보이다.
‘code’ 값을 이용하여 ‘접근토큰발급API’를 호출하게 되면 API 응답으로 접근토큰에 대한 정보를 받을 수 있다.
‘code’ 값을 이용한 API 호출은 최초 1번만 수행할 수 있으며 접근 토큰 발급이 완료되면 사용된 ‘code’는 더 이상 재사용할 수 없다.
접근 토큰 발급 API
요청 URL 정보
요청 변수 정보
grant_type
string
Y
-
인증 과정에 대한 구분값 1) 발급: ‘authorization_code’ 2) 갱신: ‘refresh_token’ 3) 삭제: ‘delete’
client_id
string
Y
-
애플리케이션 등록 시 발급받은 Client ID 값
client_secret
string
Y
-
애플리케이션 등록시 발급받은 Client secret 값
code
string
발급 때 필수
-
로그인 인증 요청 API 호출에 성공하고 리턴받은 인증코드 값 (authorization code)
state
string
발급 때 필수
-
애플리케이션에서 생성한 상태 토큰값으로 URL 인코딩을 적용한 값을 사용
refresh_token
string
갱신 때 필수
-
네이버 사용자 인증에 성공하고 발급받은 갱신 토큰 (refresh token)
access_token
string
삭제 때 필수
-
기 발급받은 접근 토큰으로 URL 인코딩을 적용한 값을 사용
service_provider
string
삭제 때 필수
‘NAVER’
인증 제공자 이름으로 ‘NAVER’로 세팅해 전송
요청문 샘플
응답 정보
access_token
string
접근 토큰, 발급 후 expires_in 파라미터에 설정된 시간(초)이 지나면 만료됨
refresh_token
string
갱신 토큰, 접근 토큰이 만료될 경우 접근 토큰을 다시 발급받을 때 사용
token_type
string
접근 토큰의 타입으로 Bearer와 MAC의 두 가지 지원
expires_in
integer
접근 토큰의 유효 기간(초 단위)
error
string
에러 코드
error_description
string
에러 메시지
3.4.5. 접근 토큰을 이용하여 프로필 API 호출하기
접근 토큰을 이용하면 프로필 정보 조회 API를 호출하거나 오픈 API를 호출하는 것이 가능하다.
프로필 정보 조회 API
요청 URL 정보
요청 변수 정보
요청 변수는 별도로 없으며, 요청 URL로 호출할 때 아래와 같이 요청 헤더에 접근 토큰 값을 전달하면 된다.
요청 헤더
Authorization
접근 토큰(access token)을 전달하는 헤더 다음과 같은 형식으로 헤더 값에 접근 토큰(access token)을 포함한다. 토큰 타입은 “Bearer”로 값이 고정되어 있다. Authorization: {토큰 타입} {접근 토큰}
요청문 예시
출력 결과
resultcode
string
Y
API 호출 결과 코드
message
string
Y
호출 결과 메시지
response/id
string
Y
동일인 식별 정보
response/nickname
string
Y
사용자 별명
response/name
string
Y
사용자 이름
response/email
string
Y
사용자 메일 주소
response/gender
string
Y
성별 (F: 여자, M: 남자, U: 확인불가)
response/age
string
Y
사용자 연령대
response/birthday
string
Y
사용자 생일(MM-DD 형식)
response/profile_image
string
Y
사용자 프로필 사진 URL
response/birthyear
string
Y
출생연도
response/mobile
string
Y
휴대전화번호
3.4.6. 접근 토큰을 이용하여 사용자 허용 프로필 권한 확인하기
사용자가 제공을 허용한 프로필의 항목을 확인
요청 URL 정보
요청 변수 정보
info
boolean
N
false
true일 경우 권한 설정정보 응답
요청 헤더
Authorization
접근 토큰(access token)을 전달하는 헤더 다음과 같은 형식으로 헤더 값에 접근 토큰(access token)을 포함한다. 토큰 타입은 “Bearer”로 값이 고정되어 있다. Authorization: {토큰 타입} {접근 토큰}
3.5. 네이버의 로그인오픈 API의 이용
4. 시스템에 네이버 로그인 정보 유지
4.1. 기존 로그인 시스템에 네이버 로그인 적용하기
4.1.1. Database의 구성
일반적인 회원 데이터베이스 구조
테이블 구조 및 테이블 생성 SQL 예시
네이버 로그인 연동을 위한 테이블 구성
네이버 로그인 사용자 정보를 저장하기 위한 테이블 구조 및 생성 SQL 예시
4.1.2. 사용자 연동 처리 및 로그인 처리
사용자 유니크 ID(sns_id)를 사용하여 사용자 정보를 조회할 수 있다.
사용자에 대한 조회가 완료되었을 경우 세션에 로그인 정보를 발행하거나 쿠키로 로그인 정보를 발행하여 로그인 상태로 만들 수 있다.
4.2. 신규 시스템에 네이버 로그인 적용하기
4.2.1. Database의 구성
네이버 로그인 연동을 위한 테이블 구성
네이버 로그인 사용자 정보를 저장하기 위한 테이블 구조 및 생성 SQL 예시 (MYSQL)
4.2.2. 네이버 로그인을 통한 회원 가입
네이버 로그인을 통하여 얻은 사용자 유니크 ID 정보를 이용하여 사용자를 식별할 수 있다.
이 식별자는 이미 가입한 사용자인지 신규 연동 사용자인지 확인하는 키로 사용할 수 있다.
4.2.3. 네이버 로그인을 통한 로그인/로그아웃의 구현
사용자 유니크 ID 정보를 통해 사용자 정보를 조회할 수 있다.
5. 네이버 로그인 사용자 프로필 갱신 및 재인증
5.1. 네이버 로그인 사용자의 프로필 갱신
5.1.1. 접근 토큰에 대하여
접근 토큰 발급 API를 통하여 접근 토큰 및 갱신 토큰을 발급받을 수 있다.
접근 토큰 API 응답형태
접근 토큰 규격
access_token : 알파벳 대소문자, 숫자, 특수문자 (+/=)가 조합된 256자리 이하의 문자열
refresh_token : 알파벳 대소문자, 숫자가 조합된 256자리 이하의 문자열
expires_in : 숫자, 발급 시점부터 expires_in(초) 후 까지 유효
접근 토큰의 용도
접근 토큰은 사용자 프로필 조회 API를 호출하거나 네이버에서 제공하는 로그인 OpenAPI를 이용할 때 사용자 인증값으로 이용된다.
접근 토큰 사용 방법
접근 토큰을 이용하여 API를 호출하는 경우 다음과 같이 요청 헤더에 접근 토큰 값을 포함한다.
요청 헤더명 : Authorization
요청 헤더값 형식 : TOKEN_TYPE ACCESS_TOKEN
접근 토큰을 포함한 응답헤더 예시
접근 토큰을 이용한 API 호출 예시
5.1.2. 갱신 토큰에 대하여
접근 토큰은 발급 후 expires_in(기본 3600초 / 1시간) 이내에만 사용이 가능하며 expires_in(초) 만큼의 시간이 지나면 접근 토큰은 더 이상 사용할 수 없다.
접근 토큰이 만료된 경우 갱신 토큰(refresh token)을 이용하여 유효한 접근토큰을 재발급 받을 수 있다.
갱신 토큰은 접근 토큰이 만료될 것을 대비하여 데이터베이스에 별도로 저장하고 이후 필요에 따라 갱신 토큰을 사용하면 된다.
접근 토큰 갱신 API
요청 URL 정보
요청 변수 정보
client_id
string
Y
-
애플리케이션 등록 시 발급받은 Client ID 값
client_secret
string
Y
-
애플리케이션 등록시 발급받은 Client secret 값
refresh_token
string
Y
-
접근토큰 발급 API를 통하여 발급받은 갱신토큰 값
grant_type
string
Y
-
요청 타입. refresh_token으로 설정
요청문 샘플
응답 정보
access_token
string
재발급 받은 접근토큰
token_type
string
토큰 타입 (bearer)
expires_in
integer
접근 토큰의 유효 기간(초 단위)
5.1.3. 접근 토큰 만료와 갱신 주기. 프로필 정보의 갱신
접근 토큰이 유효하지 않은 경우에는 갱신토큰을 이용하여 유효한 접근 토큰을 재발급 받거나 네이버 로그인 인증을 다시한번 수행하는것으로 유효한 접근 토큰을 받을 수 있다.
접근 토큰의 유효성을 판단하기 위해서는 다음과 같은 방법을 이용할 수 있다.
프로필 정보 조회 API 호출 시 응답이 정상적으로 전달될 경우 접근 토큰은 유효하다고 할 수 있다.
접근 토큰 유효성 체크 API 호출을 통해 현재 접근 토큰이 유효한지 판단할 수 있다.
접근 토큰 유효성 체크 API
요청 URL 정보
요청 변수 정보
요청 변수는 별도로 없으며, 요청 URL로 호출할 때 아래와 같이 요청 헤더에 접근 토큰 값을 전달하면 된다.
요청 헤더
Authorization
접근 토큰(access token)을 전달하는 헤더 다음과 같은 형식으로 헤더 값에 접근 토큰(access token)을 포함한다. 토큰 타입은 “Bearer”로 값이 고정되어 있다. Authorization: {토큰 타입} {접근 토큰}
요청문 샘플
응답 정보
resultcode
string
API 호출 결과 코드
message
string
접근토큰 유효성 체크 결과 메시지
5.1.4. 프로필의 갱신
사용자는 다음 정보를 변경할 수 있다.
이름, 닉네임, 프로필 이미지, 연락처 이메일 주소, 생일, 성별, 연령대, 출생연도, 휴대전화번호
따라서 주기적으로 또는 사용자 로그인이 발생할 때마다 프로필 정보를 조회하여 갱신하는 것을 권장하고 있다.
5.1.5. 사용자가 거부한 프로필 권한에 대하여 다시 동의를 수행하는 경우
제공이 거부된 프로필 항목이 서비스 이용에 반드시 필요한 항목일 경우에는 사용자로 하여금 재동의를 수행해야 한다.
네이버 로그인 재동의 API
요청 URL 정보
요청 변수 정보
response_type
string
Y
code
인증 과정에 대한 내부 구분값으로 ‘code’로 전송해야 함
client_id
string
Y
-
애플리케이션 등록시 발급받은 Client ID 값
redirect_uri
string
Y
-
애플리케이션을 등록 시 입력한 Callback URL 값으로 URL 인코딩을 적용한 값
state
string
Y
-
사이트 간 요청 위조(cross-site request forgery) 공격을 방지하기 위해 애플리케이션에서 생성한 상태 토큰값으로 URL 인코딩을 적용한 값을 사용
auth_type
string
Y
-
재동의 요청의 경우 ‘reprompt’로 전송해야 함
요청문 샘플
5.2. 재인증
5.2.1. 사용자 재인증이 필요한 경우
접근 토큰이 유효하더라도 네이버 로그인 재인증을 통해서 네이버 사용자 인증을 수행할 수 있다.
일반적으로 다음과 같은 상황에서 사용된다.
개인정보 조회 또는 변경 페이지에 접근
서비스 해지 또는 탈퇴
계정 도용이 의심되는 사용자
네이버 로그인 재인증은 다음 절차로 수행된다.
네이버 로그인 재인증 요청
현재 로그인 상태와 관계없이 네이버 로그인 절차 요구
ID/PW 입력
인증 완료
네이버 로그인 재인증 API
요청 URL 정보
요청 변수 정보
response_type
string
Y
code
인증 과정에 대한 내부 구분값으로 ‘code’로 전송해야 함
client_id
string
Y
-
애플리케이션 등록시 발급받은 Client ID 값
redirect_uri
string
Y
-
애플리케이션을 등록 시 입력한 Callback URL 값으로 URL 인코딩을 적용한 값
state
string
Y
-
사이트 간 요청 위조(cross-site request forgery) 공격을 방지하기 위해 애플리케이션에서 생성한 상태 토큰값으로 URL 인코딩을 적용한 값을 사용
auth_type
string
Y
-
재동의 요청의 경우 ‘reauthenticate’로 전송해야 함
요청문 샘플
5.3. 네이버 로그인 연동 해제
5.3.1. 네이버 로그인 연동 해제가 필요한 경우
사용자가 서비스를 더이상 이용하지 않을 경우 네이버 로그인 연동 해제 API를 통해 연결 관계를 끊을 수 있다.
연동 해제 API를 통해 성공적으로 연동이 해제되면 다음과 같이 변경사항이 적용된다.
접근토큰과 갱신토큰 만료
네이버 로그인 연동 목록에서 항목 제거
새로 연동할 경우 사용자 동의를 다시 받음
네이버 로그인 연동 해제 API
요청 URL 정보
요청 변수 정보
client_id
string
Y
-
애플리케이션 등록시 발급받은 Client ID 값
client_secret
string
Y
-
애플리케이션 등록시 발급받은 Client Secret 값
access_token
string
Y
-
유효한 접근토큰 값
grant_type
string
Y
-
요청 타입. delete 로 설정
요청문 샘플
응답 정보
access_token
string
삭제처리된 접근토큰
result
string
처리결과 (success)
연동 해제를 수행하기 전에 접근 토큰의 유효성을 점검하고 접근토큰을 갱신한 후에 수행하는 것을 권장한다.
6. 네이버 로그인 부가 기능
6.1. 네이버앱에서 서비스 자동로그인 처리
6.1.1. 서비스 자동로그인이란
사용자의 이용편의를 위하여 서비스에 자동으로 로그인된 상태로 전환하는 기능
네이버앱에서 검색을 통해 서비스에 접근하는 경우
네이버앱 즐겨찾기를 통해 서비스에 접근하는 경우
톡톡, 메일 등으로 전달된 링크를 통해 서비스에 접근하는 경우
자동 로그인 절차
자동 로그인 처리 가능 환경에 대한 체크
네이버 로그인 연동 URL에 대한 처리
Callback 페이지에서 연동 처리 또는 오류 사항에 대한 처리
로그인 완료
6.1.2. 제약사항
본 기능은 “네이버 앱”에서 서비스의 웹페이즈를 접근하는 경우에만 수행이 가능하다.
6.2. 네이버 로그인 플러스
약관 동의 대행 기능과 회원에게 마케팅 메시지 발송을 위한 기능 제공
7. 튜토리얼
먼저 애플리케이션 등록을 수행한다.
등록한 후에 Client ID와 Client Secret 정보를 복사하여 사용한다.
7.1. 프로세스 설계
7.1.1. 회원가입
7.1.2. 로그인
7.2. 예제 코드
8. 참고
Last updated