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 միջնորդները միասին թույլ են տալիս ավտոմատ կերպով կառավարել ժամկետանց տոքենները։