Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS에서 웹뷰로 로그인시 로그아웃이 안됩니다. #29

Closed
serendipity1004 opened this issue May 19, 2020 · 9 comments
Closed

Comments

@serendipity1004
Copy link

웹뷰를 사용해서 로그인하면 로그아웃을 해도 계속 기존 로그인했던 계정으로 로그인하려 하네요.

아래 코드 사용해서 로그아웃 하고있습니다.

await UserApi.instance.logout();
@j-taks
Copy link

j-taks commented May 20, 2020

저도 동일한 현상입니다. ios/android 모두 동일한 현상이 발생하네요. logout 처리를 하면, 재로그인시 email/password 입력 화면이 나오지 않고, 기존 계정으로 재 로그인합니다.

@CoderSpinoza
Copy link
Contributor

@serendipity1004 @j-taks

안녕하세요 요 부분은 현재 known issue 이고 #20 에서 따로 트래킹되고 있습니다.

우선 브라우저에서 일어나는 로그인과 카카오 API 로그인의 구분이 필요한데요. 브라우저에서 일어나는 로그인은 카카오 계정 로그인입니다. SDK 에서 실제로 필요한 로그인은 카카오 인증 서버로부터 개발자님 앱 고유의 액세스토큰을 발급받는 로그인인데, 이 액세스토큰을 카카오 계정 혹은 카카오톡 인증 정보를 이용하여 발급받게 됩니다.

  1. 브라우저를 통한 카카오 계정 로그인 -> 카카오 계정 쿠키를 통하여 인증 후 액세스 토큰 발급
  2. 카카오톡을 통한 간편 로그인 -> 카카오톡 인증 정보를 통하여 인증 후 액세스 토큰 발급

SDK 에서 로그아웃의 처리는 저장된 토큰을 삭제하고 카카오 인증서버에서 해당 액세스 토큰을 영구적으로 삭제하는 프로세스를 의미하고 위 2번의 과정을 무효화하는 스텝입니다. 그렇기 때문에 브라우저에 인증 정보는 그대로 남아있는 것이 정상입니다. 개발자님 앱에서만 로그아웃한 것이지 카카오계정 자체를 로그아웃 하는게 아니거든요.

그래서 다른 계정으로 로그인할 수 있는 방법을 제공하기 위해 카카오 해당 팀에서 대응을 준비하고 있습니다. 로그인할 시에 브라우저에서 자동 로그인을 시키지 않고, 한번 유저를 확인하고 로그아웃 및 다른 계정으로 로그인을 할 수 있는 기능을 넣는 것인데요. 이게 지금 카카오 네이티브 SDK 들에는 적용이 되어 있고 flutter sdk 에도 곧 적용될 예정입니다. #20 이슈를 트랙해주시면 될 것 같아요.

@j-taks
Copy link

j-taks commented May 20, 2020

@CoderSpinoza
상세한 안내 감사드립니다.

서비스 상에는 당연히 카카오톡이 설치 되어 있는지 유무를 판단하고,
설치가 안되어있는 경우에만 브라우저를 통한 카카오 로그인 처리를 하도록 개발되어있습니다.

다른 안드로이드 서비스에 카카오 네이티브 SDK를 활용한 로그인 처리도 했었는데,
그때는 이슈가 없던 것들이 kakao_flutter_sdk를 활용해 개발할때만 이슈가 되어 코멘트 달았습니다 ~

일단 다음 업데이트 버전을 기다려야 하겠군요,

지원해주시는 라이브러리들이 개인개발자에게 큰 힘이 됩니다 ~
사실, UI를 직접 만들고 REST로 전환해야 하는지 고민중에 있었습니다.. 허허

지원 감사합니다.

@CoderSpinoza
Copy link
Contributor

CoderSpinoza commented May 20, 2020

@j-taks

카카오 네이티브 SDK의 경우에는 웹뷰를 사용하기 떄문에 다음과 같은 이유로 해당 이슈가 발생하지 않았습니다.

  1. 2017년까지는 웹뷰의 쿠키를 직접 조작하여 로그아웃 API 호출 시 직접 쿠키를 삭제하였습니다.
  2. 웹뷰 쿠키 조작 코드가 삭제된 후에도 앱의 프로세스 종료 시 쿠키가 지워지기 때문에 항상 재로그인을 요구합니다.

OAuth 2.0 를 통한 로그인을 웹뷰에서 제공하는 부분에 대해서는 보안적인 이슈가 있어서 OS의 기본 브라우저를 이용하여 로그인하는 쪽으로 변경되는 추세입니다. 실제로 지금 베타 버전으로 오픈한 카카오 네이티브 SDK 2.0 같은 경우도 웹뷰를 아예 제거하고 기본 브라우저를 사용하는 방향으로 가고 있습니다. 쿠키를 재사용하고 앱 내에서 브라우저가 실행 되기 때문에 로그인 정보를 재사용하고 사용자 경험을 해치지 않는 방법을 제공할 것으로 예상하고 있습니다.

위에 개선점은 서버에서 처리해줄 수 있는 부분이기 때문에 SDK 는 버전 업을 하지 않으셔도 자동으로 해결이 될 것으로 예상됩니다! 카카오와 커뮤니케이션하여 빠르게 해결이 될 수 있도록 해보겠습니다. :)

@CoderSpinoza
Copy link
Contributor

@serendipity1004 @j-taks

오래 기다리셨습니다. 로그인 시 계정 쿠키가 있더라도 다른 계정으로 로그인할 수 있는 방식을 제공하는 UI가 적용되었습니다. 한번 확인해 주시고 이슈 있으면 알려주세요!

KakaoTalk_Photo_2020-10-16-15-24-34

@chb1828
Copy link

chb1828 commented Dec 29, 2020

@CoderSpinoza

  logout() async {
    await storage.delete(key: "token");
    await UserApi.instance.logout();
    await AccessTokenStore.instance.clear();
  }

제 경우에 위 그림의 형식으로 나타나지 않습니다. 바로 로그인이 되는데 웹뷰의 쿠키를 지울 수 있는 방법이나 해결방법이 있을까요??

@CoderSpinoza
Copy link
Contributor

@chb1828 지금 어떤 버전 사용하고 계신가요?

@chb1828
Copy link

chb1828 commented Dec 29, 2020

@CoderSpinoza
Flutter Version
Flutter (Channel stable, 1.20.4, on Microsoft Windows [Version 10.0.19041.685], locale ko-KR)
kakao Flutter Sdk Version
kakao_flutter_sdk: ^0.4.2 을 사용 중이며 에뮬레이터는 아래 그림과 같습니다
캡처

@chb1828
Copy link

chb1828 commented Dec 29, 2020

@CoderSpinoza
문제를 해결했습니다.
확인결과 flutter sdk를 1.22.4 버전으로 변경하고
kakao_flutter_sdk: ^0.5.2 로 버전을 올리면 제대로 작동 했습니다!
flutter sdk 1.20.4 버전에서는 kakao_flutter_sdk: ^0.5.2 버전이 작동하지 않아 변경했습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants