플러터 + 장고 카카오 로그인 구현 관련

현재 장고(파이썬)로 백엔드 개발을 하고 있습니다.
플러터 측과 협업을 하고 있는데, 구현 과정이 잘 이해가 가지 않아 질문 드립니다.
웹은 사용하지 않고 모바일만 사용하는 중입니다.

https://developers.kakao.com/docs/latest/ko/assets/style/images/kakaologin/kakaologin_sequence.png
https://developers.kakao.com/docs/latest/ko/assets/style/images/kakaologin/kakaologin_sequence_flutter.png

개발에는 공식 문서와 REST API와 플러터를 설명하는 이 이미지를 참고하고 있습니다

개발중인 플러터 측 코드를 보니 네이티브 앱 키는 플러터 측에 있는 상황이고요.
플러터 측에서 제게 들어온 요청은, 토큰을 발급 받아서 response로 토큰을 플러터 측에 전달해달라는 요청이었습니다.

그런데 문서를 읽으며 진행하다보니 의문이 들었습니다

모바일인만큼
저 step1 과정에서 까만 숫자 2부터 4까지는
카카오 계정 로그인 요청, 카카오 계정 로그인이 다 모바일에서 이루어지기 때문에
결국 302 redirect uri로 인가 코드 전달받는 쪽은 플러터가 아닌지요?

결국 저는 플러터 측에서 인가 코드를 받아와야 하는 것이라고 생각하는데,
이에 대한 생각이 궁금합니다.
그리고 모바일 환경인데 어떻게 Redirect URI를 설정할 수 있나요?
카카오 로그인 완료 후 호출할 API 주소를 적으면 그것이 결국 Redirect URI인 걸까요?

답변 부탁드립니다. 감사합니다.

안녕하세요.

웹이 아닌 모바일 환경에서는 카카오와 교신을 카카오 SDK(Front)에 일임하는 것을 권장드립니다.
(Front와 백엔드간 교신은 서비스에 필요한 정보만 받아 처리하는 형태)

카카오로그인 ( OAtuh2 ) 과정에 Front 인앱브라우저에서 인가요청 후,
백엔드URL로 리다이렉트 받아 인가코드 전달 하여 이후 카카오와 교신은 백엔드에 일임하는 것도 가능합니다.
(백엔드와 Front간 교신은 서비스에 필요한 정보만 전달하는 형태)

즉, Front와 백엔드사이에 인가코드나 액세스토큰을 주고받는 것은 보안상 피해야합니다.


그리고 모바일 환경인데 어떻게 Redirect URI를 설정할 수 있나요?

카카오 SDK를 사용하면 앱에 설정된 인텐트 스킴(Redirect URI)에 인가코드를 전달합니다.
(플러터 앱내 설정만 하시면 인가요청-리다이렉트-토큰발급과정을 SDK 가 일임합니다. )

Flutter | Kakao Developers Flutter


카카오 로그인 완료 후 호출할 API 주소를 적으면 그것이 결국 Redirect URI인 걸까요?

백엔드에서 수행하는 REST-API방식 카카오 로그인 시,
인가요청에 설정한 Redirect URI파라메터가 Redirect URI 이며 이는 액세스 토큰 발급에도 동일하게 설정해야 토큰 발급 받을 수 있습니다.

REST API | Kakao Developers REST API


카카오 로그인 및 카카오 API사용을 어디에 일임할지 결정하여 개발하시면 좋을 것같습니다.

안녕하세요. 답변 감사합니다.
그렇다면 결국 플러터 측에서 인가 코드, 토큰 발급과 같은 사항을 처리하고 서버에는 토큰으로 조회된 사용자의 정보만 전달하여
그를 통해 서비스의 로그인을 완료시키면 되는 걸까요?

그리고 어디에 일임할 지 결정하여 개발하면 좋을 것이라고 하셨는데,
모바일 환경에서도 REST API를 통해 개발하는 것이 가능한건가요?
카카오 서버에 인가 코드를 요청하고, 카카오 서버가 인가 코드를 돌려주는 과정은 결국 카카오에 로그인하는 화면과 동의 화면이 출력되어야 가능한 것 같은데 이같은 과정이 모바일에서 가능한건가요?

그렇다면 결국 플러터 측에서 인가 코드, 토큰 발급과 같은 사항을 처리하고 서버에는 토큰으로 조회된 사용자의 정보만 전달하여
그를 통해 서비스의 로그인을 완료시키면 되는 걸까요?

네, 플러터 측에서 처리 하신다면 카카오 SDK로 조회된 사용자정보로 정상 사용자임이 인증되었다고 보고
백엔드에 회원가입 또는 서비스측 로그인 처리되도록 요청하면됩니다.

그리고 어디에 일임할 지 결정하여 개발하면 좋을 것이라고 하셨는데,
모바일 환경에서도 REST API를 통해 개발하는 것이 가능한건가요?
카카오 서버에 인가 코드를 요청하고, 카카오 서버가 인가 코드를 돌려주는 과정은 결국 카카오에 로그인하는 화면과 동의 화면이 출력되어야 가능한 것 같은데 이같은 과정이 모바일에서 가능한건가요?

카카오로그인은 OAtuh2 표준으로 제공되는터라 카카오측 동의창 이후 302리다이렉트를 해야하므로
모바일 앱내 인앱브라우저에서 동의창을 띄우고 백엔드 주소로 리다이렉트 할 수 있습니다.
다만, 인앱브라우저를 띄우고 백엔드 처리 후, 닫고하는 기능을 별도로 구현해야하므로 플러터 측에 카카오와 교신을 일임하는게 더 개발하시는데 수월할 것 같습니다.