사용자에게 값이 없는 경우 카카오 계정 정보 입력을 요청하여 수집 으로 email 입력받았을 경우에도 has_email 이 true 로 떨어지나요?

안녕하세요…
카카오 로그인하기 기능을 개발중 질문을 드립니다.

카카오에 auth 요청하면 아래과 같은 profile 이 대략 아래와 같이 떨어지는걸로 알고있습니다.

{
  provider: 'kakao',
  id: 3333333333,
  username: '이름',
  displayName: '이름',
  _raw: { 생략: 생략 },
  _json: {
    id: 3333333333,
    connected_at: '2020-09-10T04:51:23Z',
    properties: {
      nickname: '이름',
      profile_image: 'http://k.kakaocdn.net/fooo/img_640x640.jpg',
      thumbnail_image: 'http://k.kakaocdn.net/fooo/img_110x110.jpg'
    },
    kakao_account: {
      profile_needs_agreement: false,
      profile: [Object],
      has_email: true,
      email_needs_agreement: false,
      is_email_valid: true,
      is_email_verified: true,
      email: 'say8425@gmail.com'
    }
  }
}

그런데 만약에 사용자에게 값이 없는 경우 카카오 계정 정보 입력을 요청하여 수집 을 활성화하였고,
이 상태에서 유저가 이메일을 갖고 있지 않아서, 유저로부터 이메일을 입력받고 callback 받았습니다.

이때 has_email 은 true 로 떨어지나요? false 로 떨어지나요?
has_email 이 카카오 계정이 갖고 있는 시점인지, 유저가 수집 요청에 응하여 입력한 시점인지 애매합니다.

또한 is_email_valid 와 is_email_verified 가 true 로 떨어지는지, false 로 떨어지는지도 알려주셨으면 좋겠습니다.

아마 false 로 떨어질 거 같은데, 문서에 명확히 언급되지 않아서 확신하지 못하겠고
실제로 이메일이 없는 유저는 테스트하기 곤란해서 알 수가 없습니다.

이 질문을 드린 이유는 카카오로부터 email 을 받았을때,
이 이메일에 대한 검증을 has_email, is_email_valid, is_email_verified 을 써도 될지 판단이 필요해서 그렇습니다.

긴 글 읽어주셔서 고맙습니다.

안녕하세요. 답변드릴게요.

질문1) has_email 이 카카오 계정이 갖고 있는 시점인지, 유저가 수집 요청에 응하여 입력한 시점인지 애매합니다.
답변)
카카오계정에 정보가 있는 상태를 의미하며, 수집 절차 거친 후에는 카카오계정에도 이메일이 있는 상태가 되기 때문에 user/me api호출 시 true가 내려옵니다.

질문2) 또한 is_email_valid 와 is_email_verified 가 true 로 떨어지는지, false 로 떨어지는지도 알려주셨으면 좋겠습니다.
답변)
수집 절차에 이메일 인증/점유 과정도 포함되기 때문에 is_email_verified, is_email_valid는 true가 됩니다.

참고) 말씀하신 각각의 필드가 특정 플로우 이후 고정되는 값이 되는 것이 아니라, 카카오계정의 상태에 따라서 바뀔 수 있는 값이기 때문에 이 점 고려하셔서 검토해보시면 좋을 것 같아요.

1개의 좋아요

도움이 정말 많이 되었습니다! 알려주셔서 고마워요 :+1: