crossplatformkorea / react-native-kakao-login

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

카톡 미설치시 카카오 계정으로 로그인을 시도하지 않음 #210

Closed judaihyun closed 3 years ago

judaihyun commented 3 years ago

Version of kakao-login libraries

3.0.7

Version of react-native

0.64.0

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

Android, 아마 IOS도

Expected behavior

카카오톡을 이용한 로그인이 불가하다면 카카오 계정으로도 물어야 합니다.

Actual behavior

현재 상황은

  1. 카카오톡 설치(최신버전)된 상태
  2. 그러나 카카오톡 로그인 안되어 있는 상태

android 소스의 login 메서드를 제가 살펴보니까 가장 먼저 isKakaoTalkLoginAvailble을 타게 되어 있는데요. 문서에는 "카카오톡으로 로그인 가능(설치) 여부 검사." 라고 나와있습니다. 저만 잘못이해한지 모르겠지만, "로그인 가능 여부 검사라는게 설치 및 로그인이 성공하는가"인줄 알았는데요. 말그대로 "설치"유무만을 boolean을 리턴합니다.

그래서 저의 상황 (1) : 카카오톡 설치 완료떄문에 true를 타게되고 소스 상 다음 줄인 loginWithKakaoTalk()을 타게 되고, 이걸 타면 저의 상황 (2) : 로그인이 안되어 있음. 때문에 "Error: KakaoTalk is installed but not connected to Kakao account." 가 발생합니다. ~~ statusCode까지 js까지 던져주면 좋겠지만 이건 나중 문제로...~~

네, 에러 정상이긴한데요.

그냥 에러만 던져줘 버리고 카카오톡 계정으로 로그인(loginWithKakaoAccount() )을 한번 더 물어야하는데 그냥 끝나버립니다.

그래서, 소스코드상의 의도로 보여지는 로그인 유무(isKakaoTalkLoginAvailble() ) 체크 후 카카오톡 설치가 되어 있지 않다면 "카카오 계정을 이용한 로그인"을 더 묻는다의 로직을 타지 않네요..

일단, 단순한 것이고 크게 중요하지는 않아보입니다. 그러나 이런 문제가 있다는것을 말씀드리고, if 문을 조정하면 되긴 할텐데, 저는 JS기반 개발자인지라,, 혹시라도 해주실분이 있으면.. 해주시기를 부탁드립니다.ㅎㅎ

추가로 여러 에러 메시지가 그냥 쌩 string으로 js에 떨어지는데, 다들 이 예외 처리는 어떻게 하셨는지 궁금하네요.

Tested environment (Emulator? Real Device?)

both

hyochan commented 3 years ago

@judaihyun 상세한 이슈 감사합니다. 충분히 고려해야할 이슈 같네요. iOS도 확실하게 확인이 되면 더 좋을 것 같습니다.

hyochan commented 3 years ago

추가적으로 이 부분은 실제로 sdk 제공자가 해결해주는 것이 바람직하다고 보입니다. 혹시 카카오 데브톡에 한번 더 이슈를 공유해주실 수 있으실까요? 우선 답변을 보고 고민해봐야할 것 같아요.

judaihyun commented 3 years ago

네 직접 하라고 합니다. 그렇게 하는게 맞는거라고.. https://devtalk.kakao.com/t/loginwithkakaotalk/109827

그런데 저는, 이 예외처리가 문제인거같습니다. 에러가 스트링으로 나와버리니,,또, 당연(?)하게도 영문이라 사용자에게 "KakaoTalk is installed but not connected to Kakao account."를 던져줄수도 없는 노릇이고..

전부 뭉뚱그려서 에러만 났다. 고객센터에 문의해달라..라고 하기엔 무리가 있지 않을까 싶습니다.

그래서 제가 못찾은 방법이 있는건지합니다. 카톡 api에서도 에러 코드에 대한 반환 명세를 보지를 못했네요.ㅠ

JeffGuKang commented 3 years ago

추가적으로 이 부분은 실제로 sdk 제공자가 해결해주는 것이 바람직하다고 보입니다. 혹시 카카오 데브톡에 한번 더 이슈를 공유해주실 수 있으실까요? 우선 답변을 보고 고민해봐야할 것 같아요.

예제를 보면 if 문으로 설치여부를 확인하고 호출하더라고요.

https://developers.kakao.com/docs/latest/en/kakaologin/ios

// Check if Kakao Talk has been installed
if (UserApi.isKakaoTalkLoginAvailable()) {
    UserApi.shared.loginWithKakaoTalk {(oauthToken, error) in
        if let error = error {
            print(error)
        }
        else {
            print("loginWithKakaoTalk() success.")

            //do something
            _ = oauthToken            
        }
    }    
}

isKakaoTalkLoginAvailable, loginWithKakaoTalk, loginWithKakaoAccount,

메소드들을 사용가능하도록 하면 어떨까요?

toy0605 commented 3 years ago

214

judaihyun commented 3 years ago

추가적으로 이 부분은 실제로 sdk 제공자가 해결해주는 것이 바람직하다고 보입니다. 혹시 카카오 데브톡에 한번 더 이슈를 공유해주실 수 있으실까요? 우선 답변을 보고 고민해봐야할 것 같아요.

예제를 보면 if 문으로 설치여부를 확인하고 호출하더라고요.

https://developers.kakao.com/docs/latest/en/kakaologin/ios

// Check if Kakao Talk has been installed
if (UserApi.isKakaoTalkLoginAvailable()) {
    UserApi.shared.loginWithKakaoTalk {(oauthToken, error) in
        if let error = error {
            print(error)
        }
        else {
            print("loginWithKakaoTalk() success.")

            //do something
            _ = oauthToken            
        }
    }    
}

isKakaoTalkLoginAvailable, loginWithKakaoTalk, loginWithKakaoAccount,

메소드들을 사용가능하도록 하면 어떨까요?