crossplatformkorea / react-native-kakao-login

react-native native module for Kakao sign in.
MIT License
358 stars 135 forks source link

gender와 age_range 값을 얻어올 수 없습니다 #176

Closed SeungsuKim closed 3 years ago

SeungsuKim commented 3 years ago

Version of kakao-login libraries

@react-native-seoul/kakao-login": "^2.10.1"

Version of react-native

"react-native": "0.63.2"

Platforms you faced the error (IOS or Android or both?)

Both

Expected behavior

카카오 for 비즈니스에 검수를 요청하여 성별과 연령대 정보를 필수로 받아오도록 설정하였습니다. 카카오 로그인시 뜨는 동의 화면에서도 성별과 연령대 정보가 필수 정보에 포함되어 있음을 확인할 수 있습니다. 혹시 몰라 "사용자에게 값이 없는 경우 카카오 계정 정보 입력을 요청하여 수집"도 체크하여 무조건 성별과 연령대 정보를 받아오도록 설정하였습니다.

image image

Actual behavior

그러나 KakaoLogins.getProfile() 함수에서 반환되는 genderage_range값은 null입니다.

Tested environment (Emulator? Real Device?)

에뮬레이터에서만 테스트해보았으나, 실기기에서도 동일하게 발생할 것으로 예상됩니다.

heyman333 commented 3 years ago

안녕하세요 @SeungsuKim 님 kakako sdk에서 실제로 데이터가 넘어오고 있는지 확인하기 위해

NSObject* handleNullableEnumGender(KOUserGender gender)
{

    if (gender == KOUserGenderMale) {
        return @"MALE";
    }

    if (gender == KOUserGenderFemale) {
        return @"FEMALE";

    }

    return [NSNull null];
}

NSObject* handleNullableEnumAgeRange(KOUserAgeRange ageRange)
{
    if (ageRange == KOUserAgeRangeType0) {
        return @"0~9";
    }
    if (ageRange == KOUserAgeRangeType10 ) {
        return @"10~14";
    }
    if (ageRange == KOUserAgeRangeType15 ) {
        return @"15~19";
    }
    if (ageRange == KOUserAgeRangeType20 ) {
        return @"20~29";
    }
    if (ageRange == KOUserAgeRangeType30 ) {
        return @"30~39";
    }
    if (ageRange == KOUserAgeRangeType40 ) {
        return @"40~49";
    }
    if (ageRange == KOUserAgeRangeType50 ) {
        return @"50~59";
    }
    if (ageRange == KOUserAgeRangeType60 ) {
        return @"60~69";
    }
    if (ageRange == KOUserAgeRangeType70 ) {
        return @"70~79";
    }
    if (ageRange == KOUserAgeRangeType80 ) {
        return @"80~89";
    }
    if (ageRange == KOUserAgeRangeType90 ) {
        return @"90";
    }
    return [NSNull null];
}

위의 obj-c에서 로그를 찍어서 확인해보실 수 있으세요?

SeungsuKim commented 3 years ago

@heyman333 네 말씀해주신대로 로그를 찍어본 결과 다음과 같이 데이터가 정상적으로 넘어오고 있음을 확인했습니다.

2020-10-13 17:31:54.381366+0900 drcha[3706:1347051] MALE
2020-10-13 17:31:54.381436+0900 drcha[3706:1347051] 20~29

그러나 여전히 JS 레벨에서는 값을 얻어오지 못하고 있습니다. 값을 얻어오는 JS 코드는 다음과 같습니다.

await KakaoLogins.login([KAKAO_AUTH_TYPES.Talk]);
const {
            id: kakaoId,
            email,
            is_email_verified,
            nickname: name,
            profile_image_url: avatar,
            age_range: ageRange,
            gender,
} = await KakaoLogins.getProfile();

해당 코드를 실행시켜 보았을때 이메일, 프로필 이미지 등의 값은 정상적으로 얻어오나, genderageRange의 경우 null을 반환합니다.

gender: null,
ageRange: null,
heyman333 commented 3 years ago

@SeungsuKim 흠 그렇다면 sdk문제는 아니고, 뭔가 if 문을 제대로 못타서 null을 리턴해주는게 아닐까 싶네요?

SeungsuKim commented 3 years ago

말씀하신대로 JS 레벨의 에러였습니다. 빠른 답변 감사드립니다!

JJalit commented 2 years ago

@SeungsuKim 똑같은 오류가 발생합니다 어떻게 해결하셨나요?