Atualizar tokens JWT no Android com OkHttp Interceptor
Introdução
Neste artigo, discutiremos o processo de atualização de JSON Web Tokens (JWTs) em um aplicativo Android usando o Retrofit. Os JWTs são amplamente usados para autenticação em aplicativos da Web e móveis. Eles permitem a transmissão segura de informações entre as partes, mas é importante atualizá-los regularmente para manter a segurança do aplicativo.
Neste artigo, mostrarei como implementar um processo de atualização JWT em um aplicativo Android usando Retrofit e OkHttp. Vamos começar.
Confira o tutorial prático completo aqui
Configurando o projeto Android
Primeiro, precisamos configurar o projeto Android instalando as dependências necessárias. Isso inclui Retrofit, OkHttp e uma biblioteca JSON Web Token. Também configuraremos a solicitação de rede no projeto Android usando o Retrofit.
Aqui está um exemplo de como instalar a biblioteca Retrofit em seu arquivo build.gradle:
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'
val retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
Em seguida, criaremos um OkHttp Interceptor para adicionar token nos cabeçalhos de nossas solicitações de API.
class AuthInterceptor: Interceptor {
override fun intercept(chain: Chain): Response {
val token = getFromStorage()
val request = chain.request()
if (token.isNullOrEmpty()) {
val newRequest = request
.newBuilder()
.header("Authorization", "Bearer $token")
.build()
return chain.proceed(newRequest)
}
return chain.proceed(request)
}
}
Agora, criaremos um cliente OkHttp ao qual adicionaremos este interceptor e, em seguida, ele será adicionado ao nosso construtor Retrofit.
private fun getRetrofit(): Retrofit {
val authInterceptor = AuthInterceptor()
val okHttpClient = OkHttpClient.Builder()
.addInterceptor(authInterceptor)
.build()
return Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build()
}
Como adicionamos tokens a cada solicitação, pode haver casos em que o token não esteja presente ou seja inválido e a solicitação gere um erro com o código de status 401. Nesse caso, precisamos atualizar o token, salvá-lo no armazenamento local e fazer o pedido original novamente.
class AuthInterceptor: Interceptor {
private fun refreshToken():Response {
// make an API call to get new token
return if (response.isSuccessful) {
val token = response.body()?.token
saveTokenToLocalStorage(token)
val newRequest = request
.newBuilder()
.header("Authorization", "Bearer $token")
.build()
chain.proceed(newRequest)
} else {
chain.proceed(request)
}
}
override fun intercept(chain: Chain): Response {
val token = getFromStorage()
val request = chain.request()
if (token.isNullOrEmpty()) {
val newRequest = request
.newBuilder()
.header("Authorization", "Bearer $token")
.build()
val response = chain.proceed(newRequest)
return if (response.code() == 401) {
refreshToken()
} else {
response
}
} else {
refreshToken()
}
return chain.proceed(request)
}
}
Conclusão
A atualização de tokens JWT no Android é crucial para garantir a segurança de suas chamadas de API. Ao usar o OkHttp Interceptor, você pode automatizar o processo e torná-lo fácil. Espero que este exemplo possa ajudá-lo a entender a implementação da atualização do token JWT no Android e equipá-lo com as habilidades necessárias para integrá-lo em seus próprios projetos.
Vamos nos conectar no LinkedIn e no Twitter !
Codificação feliz!





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)