네이버 logout 처리하기.. (스테픈 2km완)

in hive-101145 •  8 months ago 

image.png

네이버 API를 이번 프로젝트에 써보면서

느낀점이.. REST API 페이지의 설명이

이상하다는 점입니다.

분명 로그아웃 기능이 있는것 처럼 쓰여있는데

로그아웃이 안되더군요

image.png

제가 짠 로그아웃 부분인데

여기서 네이버 개발자센터에 적혀있는 logout api 내용대로

url을 작성해서 get방식으로 fetch 요청을 보냈습니다만..

로그아웃이 되진 않더구라구요

조금더 구글링을 해보니

image.png

저와 비슷한 증상에 빠진분들이 많군요

로그아웃을 했는데도 계속 재로그인이 되는 문제

image.png

여기서 설명해준 내용이 그나마 가능성이 있어보입니다.
.

image.png

개발자 공식 문서를 검색해보니

로그아웃의 api를 삭제해버린듯 하네요

한마디로... fetch등의 방식으로는 로그아웃이 불가능하다는 이야기 입니다.

위 글에서 알려준 주소로 접속을 한번 해봤습니다

http://nid.naver.com/nidlogin.logout

접속하면 바로 네이버 로그아웃이 되버리는군요

그렇다면 해당 주소로 window창을 오픈시켜서 창을 잠시 띄웠다가

윈도우 창을 종료시켜서 로그아웃을 자연스럽게 시켜버리면 될것 같습니다

image.png

코드를 조금 변경해서

logout 이라는 변수에 window.open(해당로그아웃 사이트 주소)
로 윈도우 창을 연뒤

logout변수를 조작해 0.1초만에 새로 열린 윈도우 창을 꺼버리는거죠

그럼 사용자는 잠시 새창이 열렸다가

바로 꺼지는것으로 로그아웃 처리가 되게 됩니다.

잘 동작하네요

그럼에도 큰 문제가 있습니다.

위에 게시글처럼 로그인 버튼을 누르기만해도 네이버로 자동 로그인이 되어버립니다.

image.png

네이버 로그아웃 버튼을 누르게되면

네이버 로그인시 입력했던 모든 state 값을 초기화 시켜버리는지라.

아무리 코드를 뜯어봐도 제 코드에 문제로는 보이지 않았습니다.

image.png

네이버 로그인 과정에서 발생하는 문제로 판단되어

로그인 코드를 뜯어봤습니다..

네이버는 프론트 단에서 로그인 처리를 하려면

sdk를 사용하는게 아니면 무조건 cors 문제가 발생하기 때문에

프록시로 우회하는 방법 아니면 node 서버로 요청하는 방법밖에 없습니다

저는 프론트로 처리하고 싶어 sdk로 진행하는데요

위 코드로는 딱히 손볼곳이 없어보이네요

어차피 네이버 sdk에서 제공하는 방식이기 때문에..

image.png

유저 정보를 받아오는 과정에서 발생하는 문제같아서

해당부분에서 처리하는걸 손봤습니다

naverfirst라는 변수를 store에 만들고

초기값은 true이고

로그아웃 버튼을 누르게되면 false로 변경되게 설정했고

네이버 로그인 버튼을 누를시에 해당 변수를 true로 변경시켰습니다.

드디어.. 자동 로그인이 멈추네요..

흠... 일단 네이버 api에 자세한 설명이 없는관계로..

조건문을 추가해서 무한 자동로그인을 막은 상태이나..

naver에서 api 관련 설명을 최신화 해주면 좋겠습니다.

네이버 로그인 처리해보며 좀 답답한게 많았었네요..


image.png

스테픈 2km 완료요 오늘도 힘냈습니다

하핫

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

image.png

개발자 셨어요?

개발직으로 전향하려고요

그러시군요.. 응원합니다. ^^