기본 콘텐츠로 건너뛰기

Android Auto Naver Login (네이버 자동 로그인) - 1


# CAUTION #

시작하기 전에 이 방식은 약간의 편법을 이용한 방식이고 안드로이드 4.4 이상부터 지원하는 것을 알려둔다... (그리고 현재 라이브러리로 만드는 중)


사실 이 내용은 누군가의 부탁을 받아서 만들기 시작한건데, 다 완성도 되고 부탁한 애도 관련 일 다 끝낸거 같으니까 포스팅한다...


안드로이드에서 네이버 로그인을 위해서는 간단하게 네이버 API를 사용해서 로그인 하는 방식이 주로 보편적으로 이용된다.




위와 같은 api들이 있는데 네이버 메일을 파싱하거나 네이버 카페의 글 들을 파싱해야되는경우 API 가 없기 때문에 다른 방식을 사용해서 해야된다. 지금부터 그 과정중 가장 기본이되는 네이버 로그인부터 시작해보도록 한다. https://nid.naver.com/nidlogin.login 에서의 네이버 로그인 과정을 분석해보면

  1. id, pw의 길이를 검사해서 입력햇는지 검사
  2. 입력되엇으면 http://static.nid.naver.com/enclogin/keys.nhn 또는 https://nid.naver.com/login/ext/keys.nhn 에 접속해서 랜덤 값을 가져온다
  3. js 에서 RSA 암호화 
  4. 특정 형식으로 POST
  5. 쿠키 받기

간략하게 이러한 과정을 거치는데... 내가 아는 한에서는 안드로이드에서는 js 를 돌릴수는 있지만 C# 처럼 자유롭게(?) 이용하는 것이 힘들다. 그래서 처음 선택한 방안이 HtmlUnit 이라는 것과 Sel..뭔 라이브러리가 있는데 여러개 전부 다 테스트를 해 보았지만 전부 작동이 되지를 않았다...

그래서 그냥 라이브러리 없이 진행하기로 했다.

일단 하는 방식은 간단하게 다음과 같다.
  1. 웹뷰를 이용해서 로그인
  2. 쿠키유지
엄청 간단하다. 그런데 이러한 의문이 들 수도 있다.
Q1. 웹뷰를 쓰면 입력을 수동으로 해야될텐데, 그럼 자동이 아니잖아???
A. 웹뷰 써도 자동으로 할 수 있어!

이제 답을 말하자면 WebView에서 ID와 PW를 JS를 이용해서 자동으로 입력하게 할 것이다.

우리는 3가지 정도의 CSS 선택자를 알아야된다.

CSS 정리
이름 ID 입력 PW 입력 Login 버튼
CSS 선택자 #id #pw .btn_global

이제 CSS 선택자를 알아냈으니 이제 코드를 짜보자
일단 웹뷰를 선언한 뒤에

        WebView web = (WebView)findViewById(R.id.loginView);

그 다음에 쿠키를 저장해 두기위해서 CookieSyncManager을 사용한다.

        CookieSyncManager.createInstance(getApplicationContext());
        CookieSyncManager.getInstance().startSync();
        CookieManager.getInstance().setAcceptCookie(true);

그 다음에 우리는 자바스크립트를 이용해 줘야되므로 활성화 해주고 솔직히 뭐해줘야 될지 잘 모르겟어서 필요해 보이는건 전부 때려박아버렷다.
        web.getSettings().setJavaScriptEnabled(true);
        web.getSettings().setSaveFormData(true);
        web.getSettings().setAppCacheEnabled(true);
        web.getSettings().setDatabaseEnabled(true);
        web.getSettings().setDomStorageEnabled(true);

그리고 이런 코드를 한줄추가한다. 대충 설명하자면 캐쉬를 사용할수 있는 경우 만료 되도 사용하고 아닌경우에는 네트워크에서 받아와서 사용한다는 내용이다.
        web.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

//2016-08-25 글 수정 : 네이버 로그인 페이지 수정으로 인한 버튼 CSS선택자 수정

(길어져서 2편에서 계속...)


댓글

이 블로그의 인기 게시물

싱가포르 여행 1일차

난분명 아침에 11시쯤에 바로 밥먹고 공항으로 이동한다는 소리를 들었는데...그전에 과학관으로 끌려가서 급하게 회로 만들어서 전시를 하게 됬다... 다른 학교에서 준비한 회로 급하게 준비한 회로 아쉬운게 이거 기간만 제대로 알앗더라면 좀더 멋들여 지게 만들수 있엇을것 같다... 아무튼다시 과학관에서 학교로 이동한뒤 바로 공항으로 끌려 나가게 되었다.  공항 도착!!!  오오오, 처음와보는 인천 공항...예상이상으로 크고 넓엇다. 예전에 가족여행을 가면서 청주공항은 갓지만 여긴 그 청주공항보다 더 크고 넓다는 느낌이 들었다. 그리고 너무 일찍와서 애들 사진찍고 시간만 때웟다.  비행기 타기전 시간을 계속 때우다가 비행기를 보게 됫는데 멀리서 보니까 은근 작다는 느낌...? 그리고 가까이서 보니 크더라...  비행기 안   운이 좋게도 창문쪽으로 자리가 됬다 어예  비행중  비행 시간이 총 6시간 걸린다고하길레 심심할줄 알았는데 예상외로 노래도 있을건 있고 (없을건 없다) 영화도 않본것들이 들어있어서 그래도 심심하지 않게 온것 같다. 그리고 3번째 사진이 기내식인데 이거 다른거 다 괜찮은데 두부가 왜 들어 있는건지 정말 맛이 없다... (개인적으로...)  도착 일단 도착해서 짐을 찾은 뒤, 유심을 사기위해서 이동을 했다.  유심 구입 10 일동안 100GB에 국제 전화 90분 무료라는데...싱가포르 달러기준으로 30$를 내고 구입했다. 사실상 이거 로밍보다 가성비가 좋은것 같다. 그리고 이거 제일 신기했던게...일반 유심이랑 나노랑 마이크로랑 3단 분리가 된다고 표현해야되나....아무튼 3종류 유심사이즈들을 다 커버해준다...그리고 그다음 버스를타고 숙소로 이동하기 위해서 공항 밖으로 나왔는데 ...

마소 후기

원래 한 5명? 정도가 가기로 했는데 이 석ㅇ... 암튼 애들이 다 숙제나 다른 애는 광주로 간다고 해서 결국 혼자 다녀왔다.... (도착) (사실상 경치 감상하기 좋은 곳) 앞에 광화문에서 어떤 행사인지는 모르지만 행사를 해서 위에서 지켜다 보면서 기다리다가 입장을 하게 되었다. (입장) 이번에는 저번 구글 IO 때처럼 대충 듣고 가기 싫어서 앞자리를 차지했다. 기억에 남는 내용 몇 가지를 뽑자면  일단 첫 번째로 왼쪽은 Visual Studio 내장 에뮬로 구동을 한 설정 이고, 오른쪽은 그냥 윈도우 10에 내장된 설정 창이다. 대충 보면 많이 다른 것처럼 느껴지지만 ... 이 두 가지 방법을 이용하여 두 설정을 동시에 만들어 낼 수가 있다. 사이즈에 따라 속의 UI 가 바뀌어 진다는 것이 마치 반응형 웹 페이지를 보는 기분... 두 번째로 기억에 남는 내용은 컴파일 바인딩에 관련된 것이다. (왼쪽 : 동적 데이터 바인딩, 오른쪽 : 컴파일 바인딩) 두 가지 바인딩 식이 있는데 하나는 컴파일 바인딩 하나는 동적 데이터 바인딩 동적 데이터 바인딩은 DataContext 설정이 필요하다. 컴파일 바인딩은 바인딩 성능 향상 과 기존의 편리함을 유지하고 런타임 시 부하가 적고 리플렉션 코드가 최소화 된다. 그리고 변환된 코드는 무려 디버깅이 가능하다! 하지만 대상 타입의 명시적인 선언이 필요하고 해당 페이지의 멤버만 바인딩이 가능하다는 단점(?)이 있다. 그리고, 세 번째로 기억에 남는 부분은 Windows 10 IoT 에디션 인데.... 데스크탑 API의 54%공유 (나머지는 모바일 전용 셀롤러 데이터 등) 모바일의 84% (센서 부분을 위한 API) 최소사양이 램 256MB... 하나의 UI...

싱가포르 여행 2일차

 아침  진짜 한마디로 요약하자면 제일 맛있는게 사진 오른쪽에 오렌지 주스다. 어제 기대한 것 처럼 뷔폐식으로 나오긴 했는데 한국에서 먹던것과는 맛이 매우 큰차이가난다. 사진에는 없지만 밥이 우리나라처럼 서로 좀 달라붙는 그런 밥이아니라 그냥 흐트러지는 점성이 없는 밥이다... 그리고 가장 충격이였던게 시리얼 맛이 진짜 우리나라꺼만 먹다가 가면 이게 먹으라는건지 아니면 내가 잘못가져온 건가 라는 생각이 들 정도로 맛이 없다. 그냥 콘 시리얼이라 그런거 같긴 한데...뭔가 맛이 이상한 우유랑 섞이니 맛이 아주 개판이다. (한국꺼만 먹다간 내 기준)  시스코(CISCO) 견학  원래 내이름은 KIM GYUNG SIK인데...같은 발음인 저렇게 됫다 (여권도 저래됨)  역시 네트워크 관련 기업이라서 그런지 서버실은 기본이요 네트워크를 활용한 여러가지 기술들을 볼수 있엇다.그리고 외국 기업이라 그런지 내부 지원(?) 이 상당히 좋다...노는곳도잇고 낮잠을 잘수 있는곳까지 존재한다.  점심  솔직히 말해서 이메뉴 샤브샤브같은 거라던데...뭔가 우리나라의 샤브샤브랑은 너무 많은 차이가 있던 메뉴였다...소세지도 들어가고 닭고기도 들어가고 생선도 들어가고....  동물원  동 물원에 도착해서 들어가면 맨 처음으로 펭귄이 있는데 얘내가 너무 귀여웠다. 그리고 그다음으로는 5번째 사진의 이동수단을 이용해서 관람을 진행하는데 한국에서는 보지 못했던 여러가지 종류의 새를 볼수 있엇다. 마지막으로 여기서 공연을하는데 새를 이용하고 관객들이 참여할수 있단점에서 인상깊엇던 공연이였다  (한국에서는 본적이 없다...)  싱가포르 대학교   여긴 아쉽게도 찍은 사진이 한장밖에 없다. (한장 더있지만 팀 사진이라서 일단 보류) ...