Мне было интересно узнать токен аутентификации с помощью Retrofit/RxJava. Я пересматривал свой код для использования DataManager, так что активность вызывает метод в презентаторе, ведущий подписывается на datamanager.getTrips, который затем отвечает за вызов api.DoOnCompleted допустимый способ обработки аутентификации маркера?
Я хочу убедиться, что мой accesstoken действителен, и если он не сгенерирует его первым, а затем выполнит задачу. Будет ли DoOnCompleted хорошим способом достижения этого или есть лучший способ?
/*In DataManager, service is the REST Interface*/
public Observable<VtTripResponseModel> getTrips(final String start, final String end, final String time, final String date){
if(accessToken.isValid()){
return service.getTrip(accessToken.getAccessString(),start,end,time,date,JSON_PARAM);
}
else{
generateAccessToken().doOnCompleted(new Action0() {
@Override
public void call() {
getTrips(start, end, time, date);
}
});
}
/*What do I return here? Since this will not be reached*/
}
Я бы просто использовал 'flatMap'. –
Не специально связан с RxJava, но okHttp предоставляет перехватчик Authenticator для обработки ошибок Auth - https: // github.com/square/okhttp/wiki/Рецепты # обработка-аутентификация – Jahnold