`refreshTokens` block isn't called when api throws...
# ktor
s
refreshTokens
block isn't called when api throws 401
Copy code
engine {
     preconfigured = okHttpClient
 }
install(Auth) {
                bearer {
                    loadTokens {
                        BearerTokens(
                                preferencesHelper.sessionToken,
                                preferencesHelper.sessionToken
                            )
                    }
                    refreshTokens {
                        // this block doesn't get executed
                        val response = <http://client.post|client.post> {
                            markAsRefreshTokenRequest()
                            url("<http://www.host.com/1/token|www.host.com/1/token>"))
                        }.body<Token>()
                        preferencesHelper.sessionToken = response.token
                        BearerTokens(
                            accessToken = response.token,
                            refreshToken = response.token,
                        )
                    }
                }
            }
for example an api gives below 401 response
Copy code
code: 401
 internal: {}
 message: "square/go-jose/jwt: validation failed, token is expired (exp)"
a
What value the server sends for the
WWW-Authenticate
header?
s
nothing. we don't use this header
a
Without that header refreshTokens's lambda won't get called.