동의한 사용자 정보 조회
이름, 이메일, 별명, 생일, 연령대, 성별 등의 사용자 정보 조회 가능
2. 네이버 로그인 서비스 소개
로그인 연동 회원 프로필 조회
이름, 이메일, 별명, 프로필 사진, 생일, 연령대, 성별 정보
네이버의 로그인 오픈 API 이용 (네이버 서비스 이용)
3.1. 네이버 로그인 적용 전 점검 사항
3.1.1. 애플리케이션 등록
먼저 ‘Application-애플리케이션 등록’ 메뉴에서 애플리케이션을 등록해야 한다.
→ 애플리케이션 등록 가이드 arrow-up-right
3.1.2. 필수 항목 확인
애플리케이션 이름은 “의미를 알수 없는 문자” 또는 “서비스와 관련없는 이름” 사용하지 않는다.
로고 이미지는 규격을 준수하며 서비스를 대표할 수 있는 이미지로 설정
사용 API에 “네이버 로그인”을 반드시 선택해야 한다. 로그인 오픈 API 서비스 환경은 반드시 1개 이상 선택한다.
웹 서비스 환경에서는 서비스의 대표 URL이 입력되어야 한다.
애플리케이션 환경에서는 AppScheme와 package name을 정확하게 입력이 되어야 한다.
3.1.3. 사전 검수 요청
실제 서비스에 적용하고자 한다면 애플리케이션 검수 요청을 등록해야 한다.
→ 검수 가이드 arrow-up-right
3.2. 네이버 로그인 버튼 적용 가이드
3.3. 회원 정보 확인 및 기존 회원과의 연동
3.3.1. 네이버 로그인 회원의 프로필 정보
네이버 로그인 성공시 접근 토큰을 얻는다.
접근 토큰을 이용하여 사용자 정보를 조회할 수 있다.
사용자 정보
이용자 식별자 : 64자 이내로 구성된 BASE64 형식의 문자열
(2021년 5월 1일 이후 생성된 애플리케이션부터 적용. 기존 INT64 규격의 숫자)
프로필 이미지 : 255자 이내로 구성된 URL 형태의 문자열
연령대 : 연령 구간에 따라 0-9 / 10-19 / 20-29 / 30-39 / 40-49 / 50-59 / 60- 으로 표현된 문자열
성별 : M/F (남성/여성) 으로 표된 문자
휴대전화번호 : 대쉬(-)를 포함한 휴대전화번호 문자열
각 항목별로 필수 제공 항목과 추가 제공 항목 중에 선택할 수 있다.
3.4. 네이버 로그인 연동 개발하기
3.4.1. 네이버 로그인 연동을 개발하기에 앞서
네이버 개발자센터를 통해 애플리케이션을 등록해야 한다.
등록한 후에 애플리케이션의 Client ID와 Client Secret 값을 확인할 수 있다.
3.4.2. 네이버 로그인 연동 URL 생성하기
‘네이버 로그인’ URL을 먼저 생성해야 한다.
사용자가 로그인 연동에 동의하였을 경우 동의 정보를 포함하여 Callback URL로 전송된다.
요청 URL 정보
요청 변수 정보
인증 과정에 대한 내부 구분값으로 ‘code’로 전송해야 함
애플리케이션 등록 시 발급받은 Client ID 값
애플리케이션을 등록 시 입력한 Callback URL 값으로 URL 인코딩을 적용한 값
사이트 간 요청 위조 (cross-site request forgery) 공격을 방지하기 위해 애플리케이션에서 생성한 토큰값으로 URL 인코딩을 적용한 값을 사용
요청문 샘플
3.4.3. 네이버 로그인 연동 결과 Callback 정보
네이버 로그인 인증 요청 API를 호출했을 때 사용자가 네이버로 로그인하지 않은 상태이면 네이버 로그인 화면으로 이동하고, 사용자가 로그인한 상태이면 기본 정보 제공 동의 확인 화면으로 이동한다.
정보 제공 동의 과정이 완료되면 콜백 URL에 code 값과 state 값이 URL 문자열로 전송된다.
code 값은 접근 토큰 발급 요청에 사용한다.
API 요청 실패시에는 에러 코드와 에러 메시지가 전송된다.
Callback 응답 정보
네이버 로그인 인증에 성공하면 반환받는 인증 코드, 접근 토큰(access token) 발급에 사용
사이트 간 요청 위조 공격을 방지하기 위해 애플리케이션에서 생성한 토큰값으로 URL 인코딩을 적용한 값
네이버 로그인 인증에 실패하면 반환받는 에러 코드
네이버 로그인 인증에 실패하면 반환받는 에러 메시지
3.4.4. 접근 토큰 발급 요청
Callback으로 전달받은 정보를 이용하여 접근 토큰을 발급받을 수 있다.
접근 토큰은 사용자가 인증을 완료했다는 것을 보장할 수 있는 인증 정보이다.
‘code’ 값을 이용하여 ‘접근토큰발급API’를 호출하게 되면 API 응답으로 접근토큰에 대한 정보를 받을 수 있다.
‘code’ 값을 이용한 API 호출은 최초 1번만 수행할 수 있으며 접근 토큰 발급이 완료되면 사용된 ‘code’는 더 이상 재사용할 수 없다.
요청 URL 정보
요청 변수 정보
인증 과정에 대한 구분값 1) 발급: ‘authorization_code’ 2) 갱신: ‘refresh_token’ 3) 삭제: ‘delete’
애플리케이션 등록 시 발급받은 Client ID 값
애플리케이션 등록시 발급받은 Client secret 값
로그인 인증 요청 API 호출에 성공하고 리턴받은 인증코드 값 (authorization code)
애플리케이션에서 생성한 상태 토큰값으로 URL 인코딩을 적용한 값을 사용
네이버 사용자 인증에 성공하고 발급받은 갱신 토큰 (refresh token)
기 발급받은 접근 토큰으로 URL 인코딩을 적용한 값을 사용
인증 제공자 이름으로 ‘NAVER’로 세팅해 전송
요청문 샘플
응답 정보
접근 토큰, 발급 후 expires_in 파라미터에 설정된 시간(초)이 지나면 만료됨
갱신 토큰, 접근 토큰이 만료될 경우 접근 토큰을 다시 발급받을 때 사용
접근 토큰의 타입으로 Bearer와 MAC의 두 가지 지원
3.4.5. 접근 토큰을 이용하여 프로필 API 호출하기
접근 토큰을 이용하면 프로필 정보 조회 API를 호출 하거나 오픈 API를 호출하는 것이 가능하다.
요청 URL 정보
요청 변수 정보
요청 변수는 별도로 없으며, 요청 URL로 호출할 때 아래와 같이 요청 헤더에 접근 토큰 값을 전달하면 된다.
요청 헤더
접근 토큰(access token)을 전달하는 헤더
다음과 같은 형식으로 헤더 값에 접근 토큰(access token)을 포함한다. 토큰 타입은 “Bearer”로 값이 고정되어 있다.
Authorization: {토큰 타입} {접근 토큰}
요청문 예시
출력 결과
성별 (F: 여자, M: 남자, U: 확인불가)
3.4.6. 접근 토큰을 이용하여 사용자 허용 프로필 권한 확인하기
사용자가 제공을 허용한 프로필의 항목을 확인
요청 URL 정보
요청 변수 정보
요청 헤더
접근 토큰(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를 호출하는 경우 다음과 같이 요청 헤더에 접근 토큰 값을 포함한다.
요청 헤더값 형식 : TOKEN_TYPE ACCESS_TOKEN
접근 토큰을 포함한 응답헤더 예시
접근 토큰을 이용한 API 호출 예시
5.1.2. 갱신 토큰에 대하여
접근 토큰은 발급 후 expires_in(기본 3600초 / 1시간) 이내에만 사용이 가능하며 expires_in(초) 만큼의 시간이 지나면 접근 토큰은 더 이상 사용할 수 없다.
접근 토큰이 만료된 경우 갱신 토큰(refresh token)을 이용하여 유효한 접근토큰을 재발급 받을 수 있다.
갱신 토큰은 접근 토큰이 만료될 것을 대비하여 데이터베이스에 별도로 저장하고 이후 필요에 따라 갱신 토큰을 사용하면 된다.
요청 URL 정보
요청 변수 정보
애플리케이션 등록 시 발급받은 Client ID 값
애플리케이션 등록시 발급받은 Client secret 값
접근토큰 발급 API를 통하여 발급받은 갱신토큰 값
요청 타입. refresh_token으로 설정
요청문 샘플
응답 정보
5.1.3. 접근 토큰 만료와 갱신 주기. 프로필 정보의 갱신
접근 토큰이 유효하지 않은 경우에는 갱신토큰을 이용하여 유효한 접근 토큰을 재발급 받거나 네이버 로그인 인증을 다시한번 수행하는것으로 유효한 접근 토큰을 받을 수 있다.
접근 토큰의 유효성을 판단하기 위해서는 다음과 같은 방법을 이용할 수 있다.
프로필 정보 조회 API 호출 시 응답이 정상적으로 전달될 경우 접근 토큰은 유효하다고 할 수 있다.
접근 토큰 유효성 체크 API 호출을 통해 현재 접근 토큰이 유효한지 판단할 수 있다.
접근 토큰 유효성 체크 API
요청 URL 정보
요청 변수 정보
요청 변수는 별도로 없으며, 요청 URL로 호출할 때 아래와 같이 요청 헤더에 접근 토큰 값을 전달하면 된다.
요청 헤더
접근 토큰(access token)을 전달하는 헤더
다음과 같은 형식으로 헤더 값에 접근 토큰(access token)을 포함한다. 토큰 타입은 “Bearer”로 값이 고정되어 있다.
Authorization: {토큰 타입} {접근 토큰}
요청문 샘플
응답 정보
사용자는 다음 정보를 변경할 수 있다.
이름, 닉네임, 프로필 이미지, 연락처 이메일 주소, 생일, 성별, 연령대, 출생연도, 휴대전화번호
따라서 주기적으로 또는 사용자 로그인이 발생할 때마다 프로필 정보를 조회하여 갱신하는 것을 권장하고 있다.
5.1.5. 사용자가 거부한 프로필 권한에 대하여 다시 동의를 수행하는 경우
제공이 거부된 프로필 항목이 서비스 이용에 반드시 필요한 항목일 경우에는 사용자로 하여금 재동의를 수행해야 한다.
네이버 로그인 재동의 API
요청 URL 정보
요청 변수 정보
인증 과정에 대한 내부 구분값으로 ‘code’로 전송해야 함
애플리케이션 등록시 발급받은 Client ID 값
애플리케이션을 등록 시 입력한 Callback URL 값으로 URL 인코딩을 적용한 값
사이트 간 요청 위조(cross-site request forgery) 공격을 방지하기 위해 애플리케이션에서 생성한 상태 토큰값으로 URL 인코딩을 적용한 값을 사용
재동의 요청의 경우 ‘reprompt’로 전송해야 함
요청문 샘플
5.2.1. 사용자 재인증이 필요한 경우
접근 토큰이 유효하더라도 네이버 로그인 재인증을 통해서 네이버 사용자 인증을 수행할 수 있다.
일반적으로 다음과 같은 상황에서 사용된다.
네이버 로그인 재인증은 다음 절차로 수행된다.
현재 로그인 상태와 관계없이 네이버 로그인 절차 요구
네이버 로그인 재인증 API
요청 URL 정보
요청 변수 정보
인증 과정에 대한 내부 구분값으로 ‘code’로 전송해야 함
애플리케이션 등록시 발급받은 Client ID 값
애플리케이션을 등록 시 입력한 Callback URL 값으로 URL 인코딩을 적용한 값
사이트 간 요청 위조(cross-site request forgery) 공격을 방지하기 위해 애플리케이션에서 생성한 상태 토큰값으로 URL 인코딩을 적용한 값을 사용
재동의 요청의 경우 ‘reauthenticate’로 전송해야 함
요청문 샘플
5.3. 네이버 로그인 연동 해제
5.3.1. 네이버 로그인 연동 해제가 필요한 경우
사용자가 서비스를 더이상 이용하지 않을 경우 네이버 로그인 연동 해제 API를 통해 연결 관계를 끊을 수 있다.
연동 해제 API를 통해 성공적으로 연동이 해제되면 다음과 같이 변경사항이 적용된다.
네이버 로그인 연동 해제 API
요청 URL 정보
요청 변수 정보
애플리케이션 등록시 발급받은 Client ID 값
애플리케이션 등록시 발급받은 Client Secret 값
요청문 샘플
응답 정보
연동 해제를 수행하기 전에 접근 토큰의 유효성을 점검하고 접근토큰을 갱신한 후에 수행하는 것을 권장한다.
6. 네이버 로그인 부가 기능
6.1. 네이버앱에서 서비스 자동로그인 처리
6.1.1. 서비스 자동로그인이란
사용자의 이용편의를 위하여 서비스에 자동으로 로그인된 상태로 전환하는 기능
네이버앱에서 검색을 통해 서비스에 접근하는 경우
네이버앱 즐겨찾기를 통해 서비스에 접근하는 경우
톡톡, 메일 등으로 전달된 링크를 통해 서비스에 접근하는 경우
자동 로그인 절차
Callback 페이지에서 연동 처리 또는 오류 사항에 대한 처리
본 기능은 “네이버 앱”에서 서비스의 웹페이즈를 접근하는 경우에만 수행이 가능하다.
관련 링크 arrow-up-right
6.2. 네이버 로그인 플러스
약관 동의 대행 기능과 회원에게 마케팅 메시지 발송을 위한 기능 제공
관련 링크 arrow-up-right
먼저 애플리케이션 등록arrow-up-right 을 수행한다.
등록한 후에 Client ID와 Client Secret 정보를 복사하여 사용한다.
spinner
spinner