AsyncImage( model = screenshot.uri, contentDescription = null, contentScale = ContentScale.Crop, modifier = Modifier.fillMaxSize(), onError = { error -> Timber.e("Failed to load image: ${screenshot.uri}, error: ${error.result.throwable}") }, onSuccess = { Timber.d("Successfully loaded image: ${screenshot.uri}") }) error: java.lang.IllegalStateException: Unab..
자동 로그인 관련해서 사실 아직도 헷갈린다! 기존 자동 로그인은 다른 분이 맡았던 파트인데최근 들어 구독제 개발을 하면서 확인하다보니 자동 로그인이 계속 풀려서...원인을 찾아보았다. 그래서 이번에 로직을 좀 바꿔보았다. 우선 알아야 할 기본 지식 첫 번째리프레시 토큰, 액세스 토큰 두 개를 앱에서 캐싱을 해둔다.사용자를 식별하기 위한 값이니 로그인 할 때마다 리프레시 토큰, 액세스토큰이 달라진다.서버 헤더에 액세스토큰을 보내서 사용자 인증을 받는다. 두 번째서버로부터 401 에러를 받으면 Authintercepter에서 authenticate 부분이 실행이 된다.여기로 왔다는 것은 현재 가지고 있는 액세스토큰이 만료된 것이며, 기존에 쏘려던 API 호출들이 큐에 쌓여있다.가지고 있는 리프레시 토큰으로 ..