안드로이드 Webview 카카오로그인

문의 시, 사용하시는 개발환경과 디벨로퍼스 앱ID를 알려주세요.


현재 rest api 카카오 로그인을 구현하였고, 안드로이드 웹뷰에서 로그인을 하려는데 계정을 입력하고 로그인을 하면 리다이렉트 시 세션에 저장되어있는 값을 못불러고 /m/front/login/null 이렇게 null이 들어오는데 이거는 안드로이드에서 처리를 해줘야 하는건가요?

안녕하세요.

어떤 상황인지 잘 이해하지 못하였는데요
카카오 로그인 후, redirect_uri 가 m/front/login/null로 이동한다는 말씀인가요?

좀더 자세히 설명 부탁드리며 앱 ID도 같이 부탁드립니다.

ID: 1037612, 환경: 모바일웹뷰

  1. 현재 페이지 > url을 세션에 저장
  2. 로그인 버튼 클릭 후 kakao 로그인 진행 후 완료되면 /redirectKakao.do 로 진입
  3. redirectKakao.do 진입 후 1)에서 세션에 저장했던 값을 가지고와 다시 재리다이렉트

1 에서 세션에 저장한 값을 3 에서 못갖고오는게 문제 입니다.

안녕하세요.

서비스측 쿠키는 카카오 로그인과 무관하게 서비스측 응답과 webview 설정에 따라 동작하게 됩니다.
일반 웹브라우저에서 쿠키가 유지되는지 확인해 보시고, 유지 되신다면 웹뷰의 쿠키매니저 설정을 확인 부탁드립니다.

만약 웹뷰쿠키를 사용안하고 세션사용한다면 앱쪽세션설정을 해주어야 할까요?

혹시 안드로이드에도 의존성을 추가해야된다던지 메니페스트에도 Redirect URI 설정같은게 필요할까요?

우선 일반 웹브라우저에서 정상 동작하는지 확인 부탁드립니다.

일반 웹브라우저에서는 정상동작합니다.

웹뷰의 쿠키매니저 설정은 어떻게 하셨나요?
웹뷰 구성하신 코드 공유 부탁드립니다.

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view);

        mWebView = findViewById(R.id.webView);
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);
        cookieManager.setAcceptThirdPartyCookies(mWebView, true);
    }

onResume, onPause onPageFinished 에서 쿠키 동기화 되도록 해보시겠어요?

아래처럼 추가했습니다.
다만 카카오로그인시 onResume, onPause 는 호출되지 않습니다.
@Override
protected void onResume() {
super.onResume();
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptThirdPartyCookies(mWebView, true);
}

해당 코드는 제거하시고 우선 아래처럼 해보시겠어요?

public void onPageStarted(WebView view, String url, Bitmap favicon) {
  super.onPageStarted(view, url, favicon);
  CookieSyncManager.getInstance().sync();
}

public void onPageFinished(WebView view, String url) {
  super.onPageFinished(view, url);
  CookieSyncManager.getInstance().sync();
}

해당코드를 넣어도 안됩니다…

안녕하세요.

재현가능한 URL 부탁드립니다.