문의 시, 디벨로퍼스 앱ID를 알려주세요.
비즈니스 정보 심사는 운영하시는 서비스와 디벨로퍼스앱이 일치하는지, 운영정책을 준수하는 신뢰할 수 있는 서비스인지 확인하는 절차입니다.
개인정보 항목 심사는 운영하시는 서비스 일반회원가입에서 입력 받는 항목을 기준으로 제공됩니다.
앱 권한 신청이 반려되었습니다. FAQ
앱 ID: 1334637
현재 카카오계정(이메일), 카카오계정(전화번호) 개인정보 권한을 필수동의로 하여 회원가입 정보를 받고 있습니다.
서비스 클라이언트 단에서는 scope:”account_email,phone_number” 스코프를 명시하여 정보를 받는데, 실제 프로덕션 로그인 페이지에선
카카오 개인정보 제3자 제공 동의
체크 항목에 전화번호가 포함되지 않습니다.
혹시나 해서 닉네임 정보까지 필수동의로 전환 후 scope에 포함시켜 3개의 항목을 받도록 설정 해봤지만, 이메일과 닉네임만 받고 전화번호는 여전히 동의 목록에서 제외된 상태입니다.
데브콘솔에서 미리보기로 봐도 전화번호는 포함되어있는데 scope도 명시했고, 필수동의로 되어있는데 프로덕션 로그인 페이지 동의 목록에 자꾸 제외됩니다.
옵션을 껐다 켜보기도 해보고 scope 오류일수도 있어서 여러가지 테스트를 해봤지만, 권한이 없으면 페이지가 안보여지고 에러핸들링이 되는데, 지금 같은 경우는 에러핸들링도 안되고 페이지내에 그냥 전화번호 항목만 빠져있는 상태입니다.
https://posconnect.co.kr/login
실제 프로덕션 링크입니다.
설정 문제인지, 내부적인 버그인지 확인 요청 부탁드립니다.
현재는 client에 scope에 phone_number,account_email,profile_nickname을 포함시킨 상태입니다.
tim.l
12월 9, 2025, 8:04오전
2
카카오 로그인 시, 전달하는 전화번호는 카카오계정에 연동된 카카오톡 설치 기기 전화번호입니다.
카카오톡 연동 안된 카카오계정은 전화번호가 전달되지 않습니다. (계정에 정보가 없으므로 동의창에도 표시하지 않습니다.)
동의창에 문제 없는 것을 보니 시도하신 계정이 카카오톡 연동 안된 계정인듯한데요.
검토 해보시겠어요?
카카오톡이 연동된 예전부터 사용한 제 본계정으로 봐도 전화번호가 안나옵니다. 저 뿐만이 아닌, 서비스 담당자랑 QA팀 분들도 안된다하십니다.
혹시 해당 스크린샷이 실제 첨부드린 링크의 서비스로 확인한 로그인 페이지가 맞나요?
안녕하세요.
해당 값 정상 응답되고 있는 것으로 확인됩니다.
여전히 확인이 어려우신 경우 자세한 확인을 위해 요청에 사용된 코드와 로그 첨부 부탁드립니다.
Frontend Stack
react: 19.2.2
typescript: 5.8.3
vite: npm:rolldown-vite@7.1.12
axios: 1.13.1
const script = document.createElement(‘script’);
script.src = "https://t1.kakaocdn.net/kakao_js_sdk/2.7.7/kakao.min.js";
script.async = true;
script.onload = initializeKakao;
document.head.appendChild(script);
if (window.Kakao) {
const csrfToken = Math.random().toString(36).substring(2, 15);
const safeRedirect = typeof redirect === 'string' ? redirect : '/';
const dataToTransmit = JSON.stringify({
csrf: csrfToken, // 보안 토큰
next: safeRedirect,
});
const encodedState = base64Encode(dataToTransmit);
// CSRF 검증을 위해 로컬 저장소에 CSRF 토큰 저장
sessionStorage.setItem('kakao_csrf_token', csrfToken);
window.Kakao.Auth.authorize({
redirectUri: `${window.location.origin}/login/kakao/callback`,
scope: 'phone_number,account_email,profile_nickname', // 이메일 + 전화번호 동의 필수
state: encodedState, // 인코딩된 데이터를 state에 전달
prompt: 'login',
});
}
};
react앱이어서 useEffect로 동적으로 sdk script를 붙였고, 로그인 로직을 아래와 같이 작성했습니다.
첨부해 주신 코드는 인가코드 요청에 사용된 코드 입니다.
전화번호는 사용자 정보 조회를 통해 확인 하실 수 있는데요
백앤드 구현 내용확인 가능할까요?
값이 정상 전달되고 있는 것으로 보아 응답 내용의 전화번호 필드를 잘못 참조 하고 계신게 아닌가 생각됩니다.
const KAKAO_AUTH_URL = 'https://kauth.kakao.com/oauth/token';
const KAKAO_USER_URL = 'https://kapi.kakao.com/v2/user/me';
export async function getKakaoToken(code: string): Promise<any> {
const params = new URLSearchParams({
grant_type: 'authorization_code',
client_id: process.env.KAKAO_REST_API_KEY as string,
redirect_uri: process.env.KAKAO_REDIRECT_URI as string,
code: code,
});
kakaoLogger.debug('Requesting Kakao token', {
clientId: process.env.KAKAO_REST_API_KEY ? 'SET' : 'MISSING',
redirectUri: process.env.KAKAO_REDIRECT_URI,
codeLength: code.length,
});
try {
const response = await axios.post(KAKAO_AUTH_URL, params.toString(), {
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
},
});
return response.data;
} catch (error) {
kakaoLogger.error('Kakao token error:', error);
if (error && typeof error === 'object' && 'response' in error) {
kakaoLogger.error(
'Kakao token error response',
(error as any).response?.data
);
}
throw error;
}
}
export async function getKakaoUserInfo(
accessToken: string
): Promise<KakaoUserInfoPayload> {
try {
const response = await axios.get(KAKAO_USER_URL, {
headers: {
Authorization: `Bearer ${accessToken}`,
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
},
});
return response.data;
} catch (error) {
kakaoLogger.error('Kakao user info error:', error);
throw error;
}
}
위 코드가 사용자 정보 요청 코드 부분입니다.
const token = await getKakaoToken(code);
logger.debug('Kakao token', token);
const userInfo = await getKakaoUserInfo(token.access_token);
logger.debug('Kakao login', userInfo);
const kakao_account = userInfo.kakao_account;
// 이후 kakao_account.email, kakao_account.phone_number 로 db 쿼리를 보냅니다.
위 코드가 라우트 응답 로직부분 입니다.
axios 버전은 1.13.1이고요.
앱 1334637, axios/1.13.1으로 부터의 사용자 정보 조회 응답에 모두 전화번호가 포함된 것을 확인하였습니다.
(문의주신 회원님 계정)
위 첨부하신 코드의 위치에서 값을 확인 하실 수 있을것으로 보이는데요
해당 디버그 로그에서 확인이 안되시는건가요?
네 로그 수동 확인 하고 해결했습니다.
phone_number의 포맷이 “+82 10-0000-0000“ 으로 된 걸 확인했습니다.
개발단에서는 개인 앱이나 테스트 앱을 사용해서 비즈니스 인증 이후 허용목록으로 바꿀수 있는 전화번호를 확인 못했네요..
시간내어 도와주셔서 감사합니다.
1개의 좋아요
tim.l
12월 10, 2025, 1:30오전
10
안녕하세요.
이용자의 카카오톡 설치 기기 전화번호가 해외 번호인 경우 국가코드 형식이 다를 수 있습니다.
참고 부탁드려요.
REST API | Kakao Developers REST API
카카오계정의 전화번호
국내 번호인 경우 +82 00-0000-0000 형식
해외 번호인 경우 자릿수, 붙임표(-) 유무나 위치가 다를 수 있음
(참고: libphonenumber )
필요한 동의항목 : 카카오계정(전화번호)