Sobes.tech
Junior — Middle

Оё метавон Retrofit-ро барои идоракунии автоматии токенҳои тамомшуда ҳангоми иҷрои дархостҳои API истифода бурд?

sobes.tech AI

Ҷавоб аз AI

Retrofit худо-хула ўнутранага механизму для аўтаматычнай апрацоўкі скончаных токенаў (напрыклад, абнаўлення токена пры атрыманні 401 Unauthorized) не прадастаўляе. Аднак гэта можна рэалізаваць з дапамогай карыстацкага інтэрсептара OkHttp, які перахоплівае адказ, правярае код памылкі і, калі неабходна, выконвае логіку абнаўлення токена і паўторнага запыту.

Прыклад выкарыстання інтэрсептара для абнаўлення токена:

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) { // токен скончыўся
            synchronized(this) {
                val newToken = tokenProvider.refreshToken() // абнаўляем токен
                request = chain.request().newBuilder()
                    .header("Authorization", "Bearer $newToken")
                    .build()
                return chain.proceed(request) // паўтор запыту з новым токенам
            }
        }

        return response
    }
}

Такім чынам, Retrofit у спалучэнні з інтэрсептарамі OkHttp дазваляе рэалізаваць аўтаматычную апрацоўку скончаных токенаў.