Я использую Auth0
, чтобы предоставить мне токены для аутентификации на сервере.Проблема в том, что Auth0
меняет token
, не сообщая, что он изменился.Поэтому со своей стороны мне нужно иметь возможность отправлять на сервер, когда token
изменился из-за некоторых проблем безопасности.
Сейчас я получаю доступ к token
таким образом
private fun attemptLogin() {
val account = Auth0(BuildConfig.AUTH0_CLIENT_ID, BuildConfig.AUTH0_DOMAIN)
account.isOIDCConformant = true
val authentication = AuthenticationAPIClient(account)
vLoadingScreenView.visibility = View.VISIBLE
mUser.phone?.let { phone ->
authentication
.login(phone.callingCode + phone.phoneNumber, mPinNumber, BuildConfig.AUTH0_DB_CONNECTION)
.setAudience(BuildConfig.AUTH0_AUDIENCE)
.setScope("openid offline_access")
.start(object : BaseCallback<Credentials, AuthenticationException> {
override fun onSuccess(credentials: Credentials?) {
credentials?.let {
getUserPref()?.let { user ->
user.authorization = "${credentials.type} ${credentials.accessToken}"
user.refreshToken = "${credentials.type} ${credentials.refreshToken}"
setUserPref(user)
getUserDetails()
}
}
}
override fun onFailure(error: AuthenticationException?) {
runOnUiThread {
onInvalidPin()
vLoadingScreenView.visibility = View.GONE
longToast(getString(R.string.error_occurred))
}
}
})
}
}
Используемый мной класс Credentials
имеет флаг expires_at
, и я могу сравнить текущую дату с expires_at
, но некоторые другие факторы могут помешать и изменить токен, так что я не думаю, что этохорошее решение.Может кто-нибудь дать мне какую-то информацию по этой проблеме?