crossplatformkorea / react-native-naver-login

리엑트 네이티브 네이버 로그인 라이브러리
MIT License
159 stars 89 forks source link

iOS에서 로그인 시 ID / PW 입력하는 화면이 나오지 않고 자동으로 로그인 되며, 프로필 조회 시 ID 값만 들어옴. #60

Closed venzersiz closed 1 year ago

venzersiz commented 4 years ago

Version of kakao-login libraries

(위 양식 포맷에 kakao가 아니라 naver로 변경되어야 할 것 같네요.)

2.1.0

Version of react-native

0.62.2

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

iOS (안드로이드는 해보지 않음.)

Expected behavior

네이버 로그인 페이지가 떠서 ID/PW를 입력하도록 해야 하며, 로그인 후 프로필 조회 시 개인정보를 받을 수 있어야 함.

profile: {"message": "success", "response": {"id": "xxxxxxxx"}, "resultcode": "00"} (id는 x 처리함.)

Actual behavior

네이버 로그인 페이지가 뜨지 않고 자동으로 뭔가 진행되며, 프로필 조회 시 위와 같은 응답을 받는데, 네아로 설정에서 닉네임을 받도록 체크하여도 여전히 id만 들어옴.

네이버 로그아웃 API를 호출해서 로그아웃이 된 다음, 다시 로그인 요청을 해도 ID / PW 입력하는 것이 나오지 않고 건너 띄고 화면 깜박임 후 바로 로그인 진행됨.

위 id로 들어오는 값이 제 계정에 대한 프로필 조회가 되는 건지, 아니면 테스트? 계정 정보가 들어오는 것인지 확신이 서지 않음.

Tested environment (Emulator? Real Device?)

에뮬레이터는 브라우저에서 뜨고, 실제 기기는 네이버 앱이 깔려 있어서 네이버 앱을 연동하게 되는데, 결과는 똑같음.

코드 샘플

async function handleNaverSignInPress() {
  try {
    if (naverTokenInfo === null) {
      NaverLogin.login(iosKeys, async (err, tokenInfo) => {
        if (err) {
          console.log('err:', err)
        }
        if (tokenInfo) {
          console.log('네이버 로그인 성공. tokenInfo:', tokenInfo)
          naverTokenInfo = tokenInfo

          const profile = await getProfile(naverTokenInfo.accessToken)
          console.log('네이버 profile:', profile) // resultcode: '00', message: 'sucess', response.id: 'xxxxxxxx'
        }
      })
    }
  } catch (e) {
    console.log('네이버 로그인 에러:', e)
  }
}
venzersiz commented 4 years ago

지금 새 시뮬레이터에서 테스트를 하니 최초라서 그런지 웹 브라우저를 통한 네이버 로그인 페이지가 떴습니다. 혹시 로그인 페이지 하단의 로그인 유지 체크박스가 체크되어 있어서 그런 것 같아서 체크해제하고 로그인 하더라도 다음 로그인 시 동일 현상 발생합니다.

xcode 로그는 다음과 같습니다.

2020-04-26 17:50:17.709 [info][tid:com.facebook.react.JavaScript] 네이버 로그아웃
2020-04-26 17:50:18.113405+0900 TestApp[91606:389436] 

 Nearo accessToken ::  (null)
2020-04-26 17:50:18.113552+0900 TestApp[91606:389436] 

 Nearo refreshToken :: (null)
2020-04-26 17:50:18.113677+0900 TestApp[91606:389436] 

 Nearo Token  ::   >>>>>>>>  IN VALID  >>>>>
2020-04-26 17:50:18.114584+0900 TestApp[91606:389436] -canOpenURL: failed for URL: "naversearchapp://" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"
2020-04-26 17:50:18.115368+0900 TestApp[91606:389436] -canOpenURL: failed for URL: "naversearchthirdlogin://" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"
2020-04-26 17:50:18.116099+0900 TestApp[91606:389436] -canOpenURL: failed for URL: "naversearchapp://" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"
2020-04-26 17:50:19.900645+0900 TestApp[91606:389282] 

  Nearo oauth20ConnectionDidFinishRequestACTokenWithAuthCode
heyman333 commented 4 years ago

@venzersiz 피드백 감사합니다 최근에 바빠서 관리를 못하고 있는데, 지금까지 쌓인 이슈들 모두 처리해서 업데이트 예정입니다. 조금만 기다려 주세요🙌

문서는 바로 수정 하겠습니다.

borra27 commented 4 years ago

저도 지금 똑같은 상황이에요ㅠㅠ

++추가

../node_modules/@react-native-seoul/naver-login/ios/IosNaverLogin.m 에서

RCT_EXPORT_METHOD(logout) {
    [naverConn requestDeleteToken]; // <- 추가
//    [naverConn resetToken];
    naverTokenSend = nil;
}

resetToken 대신에 requestDeleteToken 를 사용하면 로그아웃해도 자동 로그인이 되는 문제는 해결됩니다.

그리고 테스트해보니까 로그인 한 적 없음: 로그인 -> 정보 제공 동의 로그인 한 적 있음: 정보 제공 동의

이렇게 화면이 넘어갑니다. 웹뷰 자체에 이미 로그인이 되어있어서 그런거 같더라구요. 앱을 다시 껐다가 켜면 웹뷰도 리셋되서 다시 로그인 화면이 뜹니다. 이러한 화면 흐름은 다른 앱(ex: 그린카)도 동일하더라구요..

아래의 링크를 확인했을 때 "You can't remove a user's login to Safari." 라고 답변이 온 거 보면, 로그인 전적이 있는 경우 정보 제공 동의 화면으로 바로 넘어가는 건 어쩔 수 없는 문제 같기도 합니다..

https://github.com/naver/naveridlogin-sdk-ios/issues/12

JamesSleep commented 4 years ago

저같은 경우 android만 개발중인데 같은현상이 발생합니다 제 폰의 경우 삼성인터넷을 사용하고 에뮬레이터는 구글크롬에다가 네이버 자동로그인을 해두었는데 해당 기기의 기본 브라우저에서 자동로그인 해제할경우 다시 로그인 창이 뜨긴합니다

dev-arsh commented 3 years ago

For anyone wondering how to get ID/PW screen again Follow these steps-->

for IOS Settings-> General-> iPhone Storage-> Safari-> Website Data-> edit-> find naver.com-> delete it

for ANDROID Settings-> Apps-> Google Chrome(or your default browser)-> find website cache data for naver.com-> delete it

Happy coding!!

mym0404 commented 1 year ago

현재 최신 버전인 2.3.1 버전으로 시도해보시고 문제가 있으시면 다시 댓글 남겨주세요.