🗝️

Glideに独自の認証情報を持たせる

2021/03/04に公開

LazyHeaderFactory

ユーザーに表示したい画像を、サーバーから取得した有効期限つきの認証情報を持たせたい時はよくあるかと思います。

以下を使うと、うまくバックグラウンドでフェッチしながらシンプルに画像リクエストに認証を持たせてあげられます。

https://bumptech.github.io/glide/javadocs/380/com/bumptech/glide/load/model/LazyHeaderFactory.html

An interface for lazily creating headers that allows expensive to calculate headers (oauth for example) to be generated in the background during the first fetch.

通信して取得したりするコストの高いOAuthなどの認証Headerを、バックグラウンドで取得できます。

val lazyHeaders = LazyHeaders.Builder().addHeader("Authorization") {
    "Bearer ${tokenRepository.load()}"
}.build()

GlideUrlの引数に与えて、そのまま渡してあげれば完了です。

val grideUrl = object : GlideUrl(keyUrl, lazyHeaders) {
    override fun getCacheKey(): String = keyUrl.substringBefore("?")
}

Glide.with(context)
        .load(grideUrl)
        .into(imageView)

Discussion