남잭슨의 개발 블로그
카카오 로그인에서 이메일을 필수 동의로 설정했는데도 값이 없다면, 수집 후 제공 옵션과 사용자 정보 응답을 함께 확인하세요. account_email의 동의 단계 → 수집 옵션 → 저장 상태를 확인한 뒤, 실제 응답의 kakao_account.email을 확인합니다. 필수 동의만으로 이메일 값이 있다고 단정할 수는 없습니다. 카카오 공식 FAQ
1. 이메일 항목과 동의 단계를 확인하기
카카오디벨로퍼스에서 대상 앱을 선택한 뒤 카카오 로그인 → 동의항목으로 이동합니다. 개인정보 목록의 카카오계정(이메일) 행을 찾으세요. 항목 ID는 account_email입니다. 닉네임이나 프로필 사진 설정과는 별개의 항목입니다.
이메일이 가입에 꼭 필요한지 먼저 정합니다. 모든 서비스가 같은 동의 단계를 선택할 필요는 없습니다.
| 동의 단계 | 사용자에게 적용되는 방식 |
|---|---|
| 필수 동의 | 해당 항목에 동의해야 카카오 로그인을 완료할 수 있습니다. |
| 선택 동의 | 해당 항목에 동의하지 않고도 로그인할 수 있습니다. |
| 이용 중 동의 | 처음 로그인할 때 요청하지 않고, 필요한 기능을 사용할 때 추가 동의를 요청합니다. |
| 사용 안 함 | 해당 항목의 동의를 요청하지 않습니다. |
설정창의 동의 단계(필수)는 동의 단계를 선택해야 한다는 표시입니다. 이메일을 반드시 ‘필수 동의’로 설정하라는 뜻은 아닙니다. 공식 권한 표에서는 이메일 항목의 필수·선택·이용 중 동의를 비즈 앱 또는 테스트 앱에서 설정할 수 있다고 안내합니다. 옵션이 보이지 않는다면 앱의 권한 조건부터 확인하세요. 동의 단계와 개인정보 동의항목 권한

이메일 동의 단계 선택. 이메일 항목에서 ‘필수 동의’를 선택한 상태입니다. 식별 정보를 가린 캡처 편집본입니다.
2. 동의 목적과 ‘수집 후 제공’을 설정하기
동의 목적에는 서비스가 이메일을 실제로 어디에 사용하는지 적습니다. 문의 답변에 사용한다면 그 용도를 설명하고, 그런 기능이 없다면 목적에 넣지 않습니다. 예를 들어 가입 안내 메일을 실제로 보내는 경우라면 ‘회원가입 안내 메일 발송’처럼 용도를 적을 수 있습니다. 해당 기능이 없다면 예시 문구를 사용하지 말고 실제 기능과 개인정보 처리방침에 맞춰 작성하세요. 공식 동의항목 설정 안내와 정보 수집과 사용 안내를 함께 참고할 수 있습니다.

동의 목적과 수집 옵션. 동의 목적과 수집 옵션을 설정하는 화면입니다. 식별 정보·입력값을 가렸으며, 이 캡처의 수집 옵션은 아직 선택 전입니다.
이메일이 가입에 필수이고, 카카오계정에 없는 이메일도 입력받아야 한다면 카카오계정으로 정보 수집 후 제공 아래의 체크박스를 선택합니다. 화면에는 사용자에게 값이 없을 때 정보 입력을 요청하는 옵션으로 표시됩니다. 필요한 설정을 마친 뒤 저장을 누릅니다.
이 옵션은 동의 단계에 따라 작동 시점이 다릅니다. 필수 동의에서는 로그인 과정에서 누락 정보를 수집하지만, 선택 동의나 이용 중 동의에서는 서비스가 추가 동의를 요청하는 시점에 수집합니다. 선택 동의로 바꾸고 체크박스만 켰다고 처음 로그인에서 반드시 입력받는 것은 아닙니다. 수집 후 제공의 동의 단계별 동작
3. 저장 후 ‘필수 동의 [수집]’ 상태를 확인하기
저장하고 돌아온 동의항목 목록에서 account_email 행을 다시 확인합니다. 이번 설정에서는 상태 열에 필수 동의 [수집]이 표시되었습니다.

저장 후 이메일 동의항목 상태. 저장 후 account_email에 ‘필수 동의 [수집]’이 표시된 상태입니다. 식별 정보를 가린 캡처 편집본입니다.
예상한 상태가 아니라면 같은 행의 설정을 다시 열어 동의 단계와 수집 옵션을 확인합니다. 이어서 목록 하단의 동의 화면 미리보기로 사용자에게 보일 항목을 점검하세요. 미리보기에서는 표시 내용을 확인하고, 실제 정보 제공 여부는 로그인 후 API 응답에서 확인하면 됩니다. 동의 화면 미리보기 안내
4. 이메일 조회 범위와 응답 필드 확인하기
REST API 기준으로 사용자 정보 조회 응답의 kakao_account 안을 확인합니다. account_email은 콘솔에서 설정하는 동의항목 ID이고, 실제 이메일 값의 응답 필드는 kakao_account.email입니다. SDK를 사용한다면 같은 의미의 속성 이름을 해당 SDK 문서에서 확인하세요.
조회 요청에 property_keys를 지정했다면 kakao_account.email을 요청 범위에서 빠뜨리지 않았는지도 먼저 확인하세요. 응답 항목을 제한한 요청의 누락을 동의 문제로 판단하면 설정을 바꿔도 해결되지 않습니다. 사용자 정보 조회 요청의 property_keys
| 응답 필드 | 확인할 내용 |
|---|---|
email | 제공받은 대표 이메일 값이 있는지 확인합니다. |
email_needs_agreement | true이면 이메일 제공을 위해 사용자 동의가 필요합니다. |
is_email_valid | 제공받은 이메일이 유효한지 확인합니다. |
is_email_verified | 이메일 인증 여부를 확인합니다. |
필드의 의미와 제공 조건은 사용자 정보 조회 API의 KakaoAccount 항목에 나와 있습니다. 다음은 구조를 보여주는 설명용 응답 예시입니다.
{
"kakao_account": {
"email_needs_agreement": false,
"is_email_valid": true,
"is_email_verified": true,
"email": "user@example.com"
}
}
동의가 필요한 경우: email_needs_agreement가 true이면 추가 동의가 필요합니다. 콘솔에 설정을 저장해도 기존 사용자의 동의가 자동으로 생기지는 않습니다. REST API의 추가 동의 요청에는 scope=account_email을 지정하고, OpenID Connect로 ID 토큰도 다시 받아야 한다면 openid를 함께 포함합니다. REST API에서는 추가 동의로 받은 인가 코드로 새 액세스 토큰을 발급하고, 그 토큰으로 사용자 정보를 다시 조회하세요. 추가 동의 요청
email_needs_agreement가 false라고 해서 이메일 값이 반드시 있다는 뜻은 아닙니다. 같은 응답에 email이 존재하는지 확인해야 합니다. 값이 없으면 수집 옵션과 제공 가능 여부를 확인하고, 서비스에서 별도로 입력받아야 하는 경우도 처리합니다. 사용자 동의 시 정보 제공 가능 여부
값이 있어도 유효 여부와 인증 여부를 확인한 뒤 사용하세요. 이메일은 변경될 수 있으므로 서비스 회원의 고유 ID나 동일 사용자 판단의 유일한 기준으로 두지 않는 편이 좋습니다. 카카오 계정과 서비스 회원을 연결할 때는 사용자 정보 응답의 회원번호 id를 기준으로 서비스의 회원 정책을 설계합니다. 회원 ID 선정과 이메일 사용 시 주의사항
5. 증상별로 확인할 곳 좁히기
| 증상 | 우선 확인 | 다음 조치 |
|---|---|---|
| 이메일 동의 옵션을 설정할 수 없음 | 앱 유형과 동의항목 권한 | 이메일 항목의 현재 권한 조건을 확인합니다. |
| property_keys를 지정한 요청에서 이메일이 없음 | kakao_account.email 포함 여부 | 요청 범위를 확인한 뒤 다시 조회합니다. |
| 필수 동의인데 일부 계정에 이메일이 없음 | 수집 후 제공 설정과 해당 계정의 이메일 보유 여부 | 수집 옵션을 점검한 뒤 사용자 정보 응답을 확인합니다. |
email_needs_agreement가 true | 이메일 제공 동의 필요 | 추가 동의 → 새 토큰 발급 → 그 토큰으로 정보 재조회 순서로 진행합니다. |
위 값이 false인데 email도 없음 | 정보 제공 가능 여부와 수집 옵션 | 자체 입력 등 서비스의 이메일 누락 처리로 이어갑니다. |
| 이메일 값이 있지만 사용할 수 없음 | 유효 여부와 인증 여부 | 사용 가능한 주소인지 확인한 뒤 해당 기능에 사용합니다. |
| API 응답에는 이메일이 있는데 가입이 실패함 | 응답을 읽는 코드, 회원 저장, 기존 회원 연결 | 서비스에서 실패한 단계의 오류를 확인합니다. |
표의 이메일 누락 원인은 공식 FAQ의 사용자 정보 미제공 항목과 함께 확인할 수 있습니다. 이미 이메일 값까지 받은 상태라면 콘솔 설정을 반복해서 바꾸기보다, 서비스가 그 값을 어디서 처리하지 못하는지 살펴보세요.
6. 실제 로그인은 이 순서로 검증하기
- 콘솔과 동의 화면: 의도한 동의 단계·목적·수집 옵션이 저장됐는지, 동의 화면 미리보기에 어떻게 표시되는지 확인합니다.
- 사용자 동의와 응답: 테스트 계정으로 동의 완료·취소를 확인하고 실제 사용자 정보의 이메일과 상태 필드를 읽습니다. 이메일 미등록 계정을 사용할 수 있다면 입력 요청도 확인합니다.
- 서비스 회원 처리: 신규 가입·재로그인·이메일 누락 상황에서 회원 연결과 다음 화면이 의도대로 동작하는지 확인합니다.

이메일 제공 확인 흐름. 설명용 모식도입니다. 계정 상태와 동의 이력에 따라 입력·동의 과정이 달라질 수 있습니다.
확인한 범위는 콘솔의 이메일 항목에 ‘필수 동의 [수집]’이 저장된 상태까지입니다. 응답 예시와 흐름도는 설명용이며, 실제 API 이메일 제공이나 회원가입 성공을 확인한 기록은 아닙니다.
공식 문서 재확인·원고 수정일: 2026년 10월 26일.
'개발일지' 카테고리의 다른 글
| 구글 로그인(GIS) 설정: 승인된 출처와 리다이렉트 URI 확인 (0) | 2026.11.01 |
|---|---|
| Docker 용량 부족(no space left on device): 삭제 전 확인 순서 (0) | 2026.10.31 |
| EC2를 중지했는데 요금이 나올 때: EBS·탄력적 IP 확인 (0) | 2026.10.30 |
| localStorage 데이터가 다른 기기에서 안 보이는 이유: 주소·브라우저·저장 위치 (0) | 2026.10.30 |
| pip 설치했는데 ModuleNotFoundError: Python 실행 경로 확인 (0) | 2026.10.29 |
