【发布时间】:2018-04-09 20:54:45
【问题描述】:
我对 RxJava 很陌生,我正在尝试在我的 Android/Kotlin 应用程序中使用刷新令牌实现 OAuth2 流。
在拦截器中刷新访问令牌时我有点卡住了(我在 OAuthAuthenticator 中为每个 API 请求附加访问令牌)。问题是我想等到令牌请求完成后再填充请求。
有人可以提示我如何做到这一点吗?
这是我的验证器类:
class OAuthAuthenticator(
private val authStateManager: AuthStateManager,
private val authRepository: AuthRepository): Authenticator {
override fun authenticate(route: Route?, response: Response?): Request? {
// handle invalid token
if (response != null && response.code() == 401) {
println("Invalid access token")
authRepository.refreshToken()
.subscribe { _ ->
println("Token refreshed")
}
}
// this should happen after the token request is completed since it would fail again otherwise
return response?.request()!!
.newBuilder()
.header("Authorization", "Bearer " + authStateManager.current.accessToken)
.build()
}
}
【问题讨论】: