[안드로이드] 트위터 로그인을 연동시키자!


Android/안드로이드 프로그래밍 2013.02.28 17:15




대부분의 외국 자료들이나 한국자료들을 보면, 

페이스북에 비해 트위터가......참 인증 쪽이 완성도가 낮은 듯 합니다. 

최신 페이스북 SDK를 보면, 네이티브 페이스북 앱이랑 연동이 되는데, 트위터는 아직도 웹뷰를 띄워 pincode를 인증하는 방식이네요. 대부분의 한국웹들이 WebView에서 javascript를 돌리는 방식이더군요... ( 안에 Pincode HTML 태그가 바뀌면..앱도 수정을 하란말입니까! ) 

아마 대부분 이전버전의 방식들인데, 네이티브하게 웹뷰에서 바로 로그인 되는 방식을 소개해드리고자 합니다:) 


* 아래 소스는 Twitter 4J를 참조하여 만든 소스입니다:) 


먼저, http://dev.twitter.com 에서 앱을 등록하신 후 Setting 에 Callback URL을 적어줍니다. 

이전 버전들에서는 xxx://xxx 로 원하는 대로 입력이 되었던 듯 합니다만, 이제는 막힌것 같더군요. 되도록이면 자신의 홈페이지나 앱과 관련된 홈페이지주소를 사용하시는 것이 좋을 듯 합니다. 일단은 http://test.com으로 설정하고 넘어가도록 하겠습니다. 


여러 SNS로그인이 섞인 클래스에서 트위터만 떼어내는 거라 중간중간 빠지는 부분도 있을까 싶네요. 일단 소스 부터 보겠습니다.



위와 같이 선언을 해놓은 후, 



위와 같이 _twitter를 init한 후 setOAuthConsumer를 호출해줍니다. 아래쪽에 AsyncTask 를 쓴 이유는 안드로이드 4.0 이후버전부터는 메인 UI Thread에서는 네트워크와 관련 된(UI와무관한) 작업을 하게 되면 오류를 내뱉으며 죽어버리기 때문에, 트위터 로그인을 진행하는 동안 네트워크 작업은 모두 AsyncTask를 만들어 처리를 해줍니다.


바로 윗부분은 트위터에서 Token을 Reuqest해서 인증을 할 URL을 뽑아오는 작업입니다. 

_twtLoginDialog는 



위와 같이 구현을 했습니다. 

콜백 URL을 통해 인증키나 취소되었다는 메세지를 받기 때문에 shouldOverrideUrlLoading부분에서 url을 지속적으로 보면서 체크를 해주는 코드입니다:) 


이부분에서 URL을 String으로 잘라와서 Auth부분만 잘라내서 사용하시면 됩니다. 

인증을 한 이후에 AuthKey만 등록해서 서버에서 사용하기 때문에, 이 AuthKey를 가지고 무언가 처리는 하지 않았습니다:) 


저작자 표시 비영리 변경 금지
신고

WRITTEN BY
ShakeJ

0 ,