Junior — Middle
¿Se puede usar Retrofit para manejar automáticamente los tokens caducados al realizar solicitudes API?
sobes.tech AI
Respuesta de la IA
Retrofit por sí mismo no proporciona un mecanismo incorporado para el manejo automático de tokens caducados (por ejemplo, actualizar el token al recibir un 401 Unauthorized). Sin embargo, esto se puede implementar mediante un interceptor personalizado de OkHttp, que intercepta las respuestas, verifica el código de error y, si es necesario, realiza la lógica de actualización del token y vuelve a realizar la solicitud.
Ejemplo de uso de un interceptor para actualizar el token:
class AuthInterceptor(private val tokenProvider: TokenProvider) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var request = chain.request().newBuilder()
.addHeader("Authorization", "Bearer ${tokenProvider.getAccessToken()}")
.build()
val response = chain.proceed(request)
if (response.code == 401) { // token caducado
synchronized(this) {
val newToken = tokenProvider.refreshToken() // actualiza el token
request = chain.request().newBuilder()
.header("Authorization", "Bearer $newToken")
.build()
return chain.proceed(request) // vuelve a realizar la solicitud con el nuevo token
}
}
return response
}
}
De esta manera, Retrofit en conjunto con interceptores de OkHttp permite implementar el manejo automático de tokens caducados.