kakao_flutter_sdk: ^1.3.1
플러터 웹에서 카카오 로그인을 사용하려고 합니다.
final result = await AuthCodeClient.instance.authorize(
redirectUri: Application.kakaoLoginRedirect,
);
매뉴얼대로 호출을 하였으나
결과값이 result에 들어오지 않고
새창이 띄워지며 지정해둔 redirectUrl을 호출합니다.
(서버는 django를 쓰고 있습니다.)
어떻게 해야 저 final result에 값을 가져올 수 있을까요?
APP ID 521712
KOE006 에러는 해결하였습니다!
안녕하세요
플러터 웹에서 카카오로그인은 Redirect 방식과 Popup 방식으로 2가지 방식을 지원하고 있습니다.
두 방식은 SDK 내부적으로 동작하는 방식이 다른데요, 어떤 방식을 사용하려고 하시는지 잘 몰라서 대략적으로만 설명이 가능할 것 같습니다.자세한 내용은 가이드 참고 부탁드리겠습니다
Redirect 방식은 카카오SDK에서 인가 코드 요청을 하면 redirectUri로 등록된 서버를 호출하고 호출된 서버에서 토큰 발급이 필요합니다. 따라서 카카오SDK 내부에 토큰이 발급되지 않으며 SDK 내부에 토큰 저장을 원한다면 토큰이 발급된 서버로부터 토큰을 받아서 저장해야합니다.
Popup 방식은 인가 코드 요청, 토큰 발급을 모두 카카오SDK에서 처리하는 방식으로 토큰 발급이 완료되면 SDK 내부에 토큰이 저장되고 별도의 서버가 필요하지 않습니다. 그런데 로그인 과정에서 팝업을 띄워서 진행하기 때문에 일부 팝업 허용 설정이 되지 않은 웹 브라우저 환경 (ex - 웹 뷰)에서 정상적으로 동작하지 않을 수 있습니다.
위에 설명드린 내용과 가이드를 참고하시면 Redirect 방식과 Popup 방식은 구현하는 방식도 차이가 있는데요, 첨부해주신 코드를 봤을 때는 Redirect 방식이기 때문에 별도의 결과값이 전달되지 않는 것이 정상 동작입니다.
만약 Redirect 방식으로 구현하려고 하시는 것이 맞다면 해당 문서 참고하시고 추가로 문의사항 있으면 말씀 부탁드리겠습니다.
답변 감사합니다!
Redirect로 구현중인데요
토큰은 서비스 서버가 카카오로부터 발급 받았으나
어떻게 서비스 클라이언트에 전달해야 하는지를 몰라서 여쭈어봅니다 ㅠㅠ
저희가 생각하는 것은
- 서비스 서버에서 토큰을 발급 받으면 세션에 저장??
- 서비스 클라이언트 새로고침 하여 세션에 저장된 것을 확인하고 유저 정보 조회 API를 호출??
혹시 Flutter web으로 카카오 로그인을 성공하면
클라이언트에서 성공된 값을 넘겨받는 보편적인 처리 방식이 있을까요…?
아니면 서비스 클라이언트가 결과값을 받지 못하는게 정상이면
어떻게 클라이언트가 로그인되었는지 확인하고 이후 프로세를 진행해야 할까요…??
감사합니다 ㅠ
일반적으로 자체 API를 만들어서 전달하는 방식을 권장하고 있습니다.
자체 서버에서 전달받은 토큰 response를 서비스 클라이언트로 그대로 전달하시고 클라이언트에서는 전달받은 response를 SDK 내부에서 사용하는 OAuthToken 형태로 변환 후 저장하면 SDK의 기능들을 사용할 수 있습니다.
https://developers.kakao.com/docs/latest/ko/kakaologin/flutter#set-access-token