Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

E_UNKOWN Attempt to invoke virtual method 'java.lang.String com.kakao.usermgmt.response.model.Profile.getNickname()' on a null object reference 에러가 발생합니다. #140

Closed
peacel opened this issue Jun 25, 2020 · 12 comments · Fixed by #151

Comments

@peacel
Copy link

peacel commented Jun 25, 2020

Version of kakao-login libraries

2.5.0

Version of react-native

0.62.2

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

android

Expected behavior

샘플코드의 getProfile()에서 KakaoLogins.getProfile()이 에러가 없이 정상적으로 결과를 가져와야 하는 부분입니다.

Actual behavior

KakaoLogins.getProfile() 호출시 아래와 같은 에러가 발생합니다.

Get Profile Failed:E_UNKOWN Attempt to invoke virtual method 'java.lang.String com.kakao.usermgmt.response.model.Profile.getNickname()' on a null object reference

Tested environment (Emulator? Real Device?)

갤럭시 노트 5


https://github.com/react-native-seoul/react-native-kakao-login

이 곳에 있는 샘플 코드를 실행하였습니다.

카카오톡 로그인 > 필수만 동의 (가장 위에 것) > 그 후 토큰은 정상적으로 가져오고, GetProfile()을 호출하여 "Get Profile Start" 로그가 나온 후에 위에 적은 내용과 같이 "Get Profile Failed:..." 로그가 나타납니다.

@heyman333 heyman333 added the bug label Jun 28, 2020
@heyman333
Copy link
Contributor

혹시 이렇게 됐을경우 앱이 죽나요? 아니면 그냥 단순히 경고 메세지는 아닌가요?
지금 확인해 보니 다음처럼 필수 항목이 아닌경우는 null로 데이터가 들어오는 것 같네요. (샘플프로젝트에서 확인)
Screenshot_1593933066
Screenshot_1593933085

@LeeKyungJoon
Copy link

LeeKyungJoon commented Jul 6, 2020

저도 위와 같은 오류가 발생하였습니다. 터미널에 LOG: Get Profile Failed:E_UNKOWN Attempt to invoke virtual method 'java.lang.String com.kakao.usermgmt.response.model.Profile.getNickname()' on a null object reference가 뜨는 상황입니다.개발자님이 하신 방법으로 했을 경우 위의 스크린샷처럼 잘 나오지만 현재 저희는 이메일이 필요한 상황입니다.

@heyman333
Copy link
Contributor

heyman333 commented Jul 6, 2020

@LeeKyungJoon 안녕하세요. 저 에러메제시가 로그캣에 찎히는건지 자바스크립트단에서 찍히는건지는 다시 한번 확인해 보겠습니다~
하지만 개발자또는 회사에서 사용자로부터 이메일정보를 받으려면 카카오측에 검수를 받아야 합니다. 그런경우가 아니라면 사용자는 앱에 이메일정보를 주지 않을 권리를 갖게 됩니다

https://developers.kakao.com/docs/latest/ko/user-mgmt/common#user-info

@peacel
Copy link
Author

peacel commented Jul 6, 2020

const getKakaoProfile = () => {
logCallback('Get Profile Start', setKakaoProfileLoading(true));

KakaoLogins.getProfile()
  .then(result => {
    setKakaoProfile(result);
    logCallback(
      `Get Profile Finished:${JSON.stringify(result)}`,
      setKakaoProfileLoading(false),
    );
  })
  .catch(err => {
    logCallback(
      `Get Profile Failed:${err.code} ${err.message}`,
      setKakaoProfileLoading(false),
    );
  });

};

위의 부분에서 err를 catch해서 "Get Profile Failed:E_UNKOWN Attempt to invoke virtual method 'java.lang.String com.kakao.usermgmt.response.model.Profile.getNickname()' on a null object reference" 메시지가 콘솔 로그로 찍힙니다.

-> 보여주신 화면 이미지처럼, id는 나오고 email이 null이라도 나왔으면 하는데요. 저는 프로파일 정보를 전혀 가져오지 못하고 있습니다 ^^;;

@LeeKyungJoon
Copy link

LeeKyungJoon commented Jul 7, 2020

@heyman333 안녕하세요. 답변 감사합니다. 우선, 개발자님께서 알려주신 답변으로 저희 회사 측에서 확인한 결과 이메일을 사용하는 것이 아닌 id를 사용하는 것으로 변경하였습니다만 @peacel 님과 같은 결과를 보여주고 있어 id 조차 사용하지 못하는 상황입니다. 현재 유일하게 가져올 수 있는 것을 login을 통한 토큰과 만료일, refresh토큰 뿐입니다. 참고로 저 에러는 로그캣에서 찍히고 있습니다. 추가로 에뮬레이터가 아닌 실제 안드로이드 기종으로 확인하고 있습니다.

@heyman333
Copy link
Contributor

@LeeKyungJoon @peacel 아 무슨말씀이신지 잘 알겠습니다. 이번주중에 확인하고 이상이 있을경우 수정하겠습니다.

@heyman333
Copy link
Contributor

@LeeKyungJoon @peacel 두분다 iOS는 잘 동작하시는건가요?

@LeeKyungJoon
Copy link

@heyman333 네 iOS 에서는 잘 작동하는거 확인했습니다.

@Eumhongin
Copy link

Eumhongin commented Jul 9, 2020

@heyman333 네 iOS 에서는 잘 작동하는거 확인했습니다.

혹시 iOS동작 할때 세팅 어떻게 되있는지 알수있을까요?
RN 버전과 패키지에 있는 카카오 버전이 궁금합니다.

@peacel
Copy link
Author

peacel commented Jul 9, 2020

@LeeKyungJoon @peacel 두분다 iOS는 잘 동작하시는건가요?

저는 안드로이드OS에서만 체크하고 있습니다.

@LeeKyungJoon
Copy link

@Eumhongin 현재 iOS에서 세팅은 Pod install을 사용하였고, 개발자님께서 올리신 방법대로 AppDelegate.m에 코드를 그대로 복붙한 상태입니다. 그리고 RN 버전은 "0.61.5" 이며, 패키지에 있는 카카오 버전은 "^2.4.5"을 사용 중입니다. 코드는 다음과 같습니다.
const KakaoTalk = () => {
//KakaoLogins.logout()
// .then(result => {
// console.log('logout');
// })
// .catch(err => {
// console.log('error', err);
// });
KakaoLogins.login()
.then(result => {
KakaoLogins.getProfile()
.then(result => {
console.log('TTTTT', result.id);
})
.catch(err => {
console.log(Get Profile Failed:${err.code} ${err.message});
});
console.log('TTTTTT', result);
})
.catch(err => {
if (err.code === 'E_CANCELLED_OPERATION') {
console.log('KakaoTalk -> err.message', err.message);
} else {
console.log(
'KakaoTalk -> Login Failed:${err.code} ${err.message}',
Login Failed:${err.code} ${err.message}
);
}
});
};

@heyman333
Copy link
Contributor

heyman333 commented Jul 11, 2020

@LeeKyungJoon 혹시 안드로이드 에뮬레이터에서는 에러가 발생하지 않으시나요?
저도 지금 새로운 프로젝트를 만들고 위와 같은 경우에 대해서 테스트 해보고 있는데 다음처럼 안드로이드 LogCat에 필요한 데이터가 잘 들어오네요 (이메일을 선택으로 두고 이메일을 체크 하지 않았습니다) 저도 안드로이드 네이티브 개발자가 아닌지라 명확한 에러상황을 파악하는데에 다소 어려움이 있습니다😭

제가 안드로이드 실기기가 없어서 지금 딱히 테스트 해볼 방법이 없네요 ㅠㅠ 에뮬레이터에서 한번 확인해 주시면 감사하곘습니다. 빨리 해결 됐으면 좋겠네요

스크린샷 2020-07-11 오후 6 19 27

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants