У меня есть аутентификатор, подключенный к клиенту Okhttp3, который успешно вызывается, когда приходит ответ 401. В аутентификаторе я хочу аутентифицировать пользователя с помощью токена обновления. Я использую IBM AppId для аутентификации.
private Authenticator getAuthenticator() {
return new Authenticator() {
@Override
public Request authenticate(Route route, Response response) throws IOException {
// code to authenticate with refresh token
return null;
}
};
}
И у меня есть следующий код для аутентификации с токеном обновления:
AppID.getInstance().signinWithRefreshToken(getApplicationContext(), refreshTokenString, new AuthorizationListener() {
@Override
public void onAuthorizationFailure(AuthorizationException exception) {
//Exception occurred
}
@Override
public void onAuthorizationCanceled() {
//Authentication canceled by the user
}
@Override
public void onAuthorizationSuccess(AccessToken accessToken, IdentityToken identityToken, RefreshToken refreshToken) {
//User authenticated
}
});
Теперь, как вы можете видеть, это асинхронный запрос, и я не могу поместить этот код в аутентификатор, потому что метод вернется до вызова onAuthorizationSuccess(). Кроме того, AppId не имеет синхронного типа запроса, который я могу использовать. Не могли бы вы указать мне, как мне использовать этот код в классе аутентификатора. Пожалуйста, помогите мне с этой проблемой.