retrofit2를 사용하여 Authorization 인증하기

2020. 12. 9. 16:35 안드로이드/개발 TIP

앱에서 서버와 통신을 할 때 사용자의 인증이 필요한 경우가 있습니다.

이럴 경우에는 해더에 Authorization를 추가하여 인증된 사용자만 정보를 취득하도록 합니다.

Authorization에도 BearerToken, ApiKey, OAuth2.0등 여러가지 종류가 있습니다.

그럼 어떻게 해더에 Authorization를 넣을까요?

제가 즐겨쓰는 retofit2와 okhttp3를 이용하여 알아보도록 할게요.

 

먼저 retorfit2의 custom header를 사용하여 추가하는 방법입니다.

public interface ApiService {  
    @Headers("Authorization: your auth token")
    @GET("/test")
    List<Test> getTestData();
}

 

또 다른 방법으로는 okhttp3의 interceptor를 이용하는 방법입니다.

val builder =  OkHttpClient.Builder()
	.connectTimeout(TIMEOUT_LIMIT, TimeUnit.SECONDS)
	.readTimeout(TIMEOUT_LIMIT, TimeUnit.SECONDS)
	.writeTimeout(TIMEOUT_LIMIT, TimeUnit.SECONDS)
	.addInterceptor(HeaderInterceptor("your auth token"))
builder.build()

class HeaderInterceptor constructor(private val token: String) : Interceptor {

    @Throws(IOException::class)
    override fun intercept(chain: Interceptor.Chain): Response {
        val token = "Bearer $token"
        val newRequest = chain.request().newBuilder()
            .addHeader("Authorization", token)
            .build()
        return chain.proceed(newRequest)
    }
}

 

위의 예제를 통하여 Authorization사용해 인증된 서버통신을 하는 방법에 대해서 알아보았습니다.



출처: https://akaisun.tistory.com/72?category=622886 [아카이의 개발창고]