안녕하세요 개인적인 개발을 하고 있습니다. access token을 통하여 이메일을 가져오려고 하는데요
이메일은 이용중 동의를 선택하였고 처음에 kakao/login/ url를 이용하여 로그인을 시도 하였습니다.
처음에는 동의하겠냐는 화면이 나왔지만 전체동의를 한 후에는 동의 화면이 뜨지 않고 데이터를 print해보니
‘email_needs_agreement’: True 이 False로 변하지 않으면서 email를 가져오지 않습니다. 해결방법이 있을까요??
안녕하세요.
확인을 위해 앱 ID 부탁드립니다.
앱ID
https://developers.kakao.com/ 의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다
ex) 123456
847033 입니다
앱 847033의 카카오계정(이메일) 동의 항목은 이용 중 동의로 설정되어 있습니다.
이 경우 기본적으로 카카오 로그인 시, 동의화면에 표시되지 않고 추가 항목 동의 받기 기능을 통해서만 동의 받으실수 있습니다.
테스트하신 계정은 모두 동의하지 않은 상태로 위 기능을 이용하여 동의 받으신 뒤, 해당 접근토큰을 활용 부탁드립니다.
동의 항목의 이메일을 선택동의로 하여도 동의화면은 나오지 않고 email도 오지 않습니다…ㅜ
이미 카카오 로그인 하신 경우라면 선택동의 항목은 다시 표시되지 않습니다.
이 또한 추가 항목 동의 받기 기능을 통해서만 추가 동의 받으실수 있습니다.
def kakao_login(request):
client_id = KAKAO_ID
return redirect(f"https://kauth.kakao.com/oauth/authorize?client_id={client_id}&redirect_uri={KAKAO_CALLBACK_URI}&response_type=code&scope=account_email")
def kakao_callback(request):
client_id = KAKAO_ID
code = request.GET.get("code")
# code로 access token 요청
token_request = requests.get(f"https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id={client_id}&redirect_uri={KAKAO_CALLBACK_URI}&code={code}")
token_response_json = token_request.json()
# 에러 발생 시 중단
error = token_response_json.get("error", None)
if error is not None:
raise JSONDecodeError(error) # type: ignore
access_token = token_response_json.get("access_token")
profile_request = requests.post(
"https://kapi.kakao.com/v2/user/me",
headers={"Authorization": f"Bearer {access_token}"},
)
profile_json = profile_request.json()
kakao_account = profile_json.get("kakao_account")
print(profile_json["kakao_account"])
email = kakao_account.get("email", None)
kakao_login 함수에서 scope에 email를 입력하면 추가 항목 동의 받기 기능이 되는 건가요?
account_email 을 입력하시면 추가 항목 동의 받기 기능으로 동작합니다.
동의 항목의 한글명과 영문 코드는 아래 문서를 참고 부탁드립니다.
설정하기 | Kakao Developers 설정하기 - 개인정보 동의 항목