Vita Sokolova
12/18/2024, 10:23 AMrunCatching {
co.touchlab.kermit.Logger.v(LOGGER_TAG, null) {
"Tokens update request"
}
val url = "https://${configuration.getBaseAuthUrl()}/application/o/token/"
client.submitForm(
url = url,
formParameters = parameters {
append("grant_type", "refresh_token")
append("client_id", "XXX")
append("refresh_token", oldTokens?.refreshToken ?: "")
}
) { markAsRefreshTokenRequest() }.body<TokenInfo>()
}.fold(
onSuccess = { tokens ->
co.touchlab.kermit.Logger.v(LOGGER_TAG, null) {
"Tokens were successfully updated"
}
callback.onSuccess(
AuthTokens(
idToken = tokens.idToken,
accessToken = tokens.accessToken,
refreshToken = tokens.refreshToken,
accessTokenExpirationTime = Clock.System.now()
.plus(tokens.expiresIn, DateTimeUnit.SECOND).toEpochMilliseconds()
)
)
BearerTokens(tokens.accessToken, tokens.refreshToken.orEmpty())
},
onFailure = {
co.touchlab.kermit.Logger.e(LOGGER_TAG, it) {
"Tokens update failed"
}
callback.onError(it)
null
}
)
}
Vita Sokolova
12/18/2024, 10:32 AMVita Sokolova
12/18/2024, 10:40 AMclass BearerAuthProviderWithoutCaching(...) : AuthProvider
which doesn’t have AuthTokenHolder
. Apparently, it breaks the logic. With default BearerAuthConfig
it works correctly.