플러터에서 카카오 로그인 리프레쉬 토큰

문의 시 사용하시는 SDK 버전 정보와 플랫폼(Android / iOS) 및 디벨로퍼스 앱ID를 알려주세요.


현재 개발 중인 어플리케이션입니다.
현재 베타버전으로 웹앱 형식으로 출시해서 테스트 및 사용 중입니다.

로그인 구현은 잘 되어 있습니다만, 리프레시 토큰으로 로그인 정보 갱신이 안되네요.
문서 정보를 보면 flutter에서도 구현이 가능한 것처럼 보이지만,
리프레쉬 토큰 관련한 정보를 보면 rest Api에서만 구현이 가능하다고 또 나와있기도 하네요.

현재는 서버를 통하지 않고, 플러터와 파이어베이스를 통해 직접 로그인과 유저관리를 하고 있는데,
백엔드 서버를 통해 restApi 통신을 해야 리프레시 토큰이 사용 가능한가요?

아니면 플러터에서 바로 로그인을 구현한 방식으로 리프레시 토큰을 통한 토큰 갱신이 가능한지 궁금합니다!
현재는 web app으로 구현해서 구동중입니다 ^^

안녕하세요.

확인을 위해 앱 ID 부탁드립니다.


앱ID
https://developers.kakao.com/ 의 내 애플리케이션>앱 설정>요약 정보 : 기본정보에 있는 앱 ID
숫자로된 ID 입니다
ex) 123456

1065597 입니다 ^^

안녕하세요.

카카오톡으로 로그인: 웹 을 이용하여 웹페이지 구성하고, 웹뷰에서 해당 페이지 띄우는 것으로 이해 했습니다.

현재 베타버전으로 웹앱 형식으로 출시해서 테스트 및 사용 중입니다.

웹앱 형식으로 사용하신다면, 카카오 로그인 인가코드 요청 이후 리다이렉트 URI에서 REST-API 키로 액세스 토큰 발급 받아 사용하셔야할 텐데요.

카카오톡으로 로그인: 웹 또는 카카오계정으로 로그인: 웹으로 카카오 로그인 요청 시, 서비스 서버에서 인가 코드를 사용해 REST API로 토큰 받기를 요청하여 토큰을 발급받아야 합니다. 리프레시 토큰 처리도 마찬가지 입니다.


다만, “리프레시 토큰으로 로그인 정보 갱신” 이라고 하신부분이 잘 이해되지 않는데요.

카카오 API 사용을 위해
리프레시 토큰으로 액세스 토큰 갱신하는 것이 아니라 별도로 관리하시는 유저 로그인 세션 갱신을 의미하신걸까요?

지금은 JAVA-Script Key로 플러터에서 바로 로그인을 구현한 상태입니다.

액세스 토큰을 발급받아 로그인이 된 이후, 시간이 지난 후 리프레시 토큰을 사용해서, 유저 로그인 상태 유지하고 싶은데, 2시간이 지나면 로그아웃이 되어서요. 네이티브앱에서는 로그인 유지가 잘됩니다 ^^ 웹앱에서만 자꾸 로그인 상태 유지가 안되네요.

Future refreshToken() async {
try {
OAuthToken newToken = await AuthApi.instance.refreshToken();
final prefs = await SharedPreferences.getInstance();
await prefs.setString(‘kakao_token’, newToken.accessToken);
print(‘토큰갱신 성공’);
return true;
} catch (e) {
print(‘토큰갱신 실패’);
return false;
}
}

이 부분이 웹앱에서 구현이 안되는듯한데, 자바스크립트 키로는 웹앱 로그인 유지가 안되는걸까요?

안녕하세요.

네이티브앱에서는 모바일 기기에서 사용자가 단독으로 사용하므로 API 호출 시, 토큰 만료되었다면 리프레시 토큰으로 갱신하여 호출하게됩니다.

Flutter 웹방식 에서는 불특정 다수가 접근 가능하므로 해당 기능을 제공하지 않습니다.
명시적으로 토큰 갱신하는 refreshToken() 함수도 추후 웹방식에서는 제공하지 않을 계획이나
현재는 정상작동하며, 해당 함수 호출하여 토큰 갱신된 이력도 확인됩니다.

즉, 카카오 API 호출을 위한 액세스 토큰 갱신은 refreshToken() 함수 호출로 정상 처리 되었습니다.

웹앱에서만 자꾸 로그인 상태 유지가 안되네요.

다만, 말씀하신 로그인 유지 상태라는 것이 액세스 토큰 유효상태를 의미하지 않는 것 같은데요.
개발하신 시스템의 로그인 세션 유지 및 연장은 refreshToken() 함수 처리와 별개로 구현해주셔야합니다.

1개의 좋아요