프로그래밍/Android

[안드로이드] WebView에서 세션 쿠키 활성화 하기 (소셜 로그인)

Lou Park 2021. 3. 14. 10:59

다른 곳에서 개발한 웹을 웹앱으로 만들다가 소셜 로그인이 안되길래 이곳 저곳 찾아보았다.

 

실제 브라우저에서 로그인 과정

(1) 네이버로 로그인하기 클릭

(2) 현재 창에서 팝업이 떠서 네이버 로그인

(3) 팝업이 닫히고 로그인 완료

 

앱 내에서 로그인 과정

(1) 네이버로 로그인하기 클릭

(2) 네이버 로그인 페이지가 열림

(3) 창이 닫힘, 로그인 페이지가 다시 보임

 

webView.setSupportMultipleWindows(true)가 되어있지만 팝업이 뜬다는 신호는 오지 않았다.

직접 컴퓨터 브라우저로 실행해보니 동일 증상은 '다른 탭에서 열렸을때' 발생했다.

해결방법은 다음과 같다.

 

webViewClient = object: WebViewClient() {
  override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
    webView.loadUrl(url ?: "")
    return true
  }
}

 

앱 내에서 로그인이 되지 않았던 이유는 네이버 로그인 페이지가 새로운 브라우저에서 열렸기 때문이다. 그래서 네이버로 로그인 하더라도 쿠키 정보는 새로운 브라우저가 닫히면서 유실되게 된다. 그래서 처음에 네이버로 로그인하기 클릭시 url을 intercept하여 현재 브라우저에서 다시 로드하면 해당 문제가 해결되게 된다.