Добавить перехватчик запроса на модификацию с помощью Dagger во время выполнения

Я использую кинжал и модификацию. Я внедряю свои услуги по модернизации с помощью Dagger.

Теперь я хочу сделать запрос на авторизацию, чтобы получить accessToken.

После этого я хочу улучшить свой модуль API с помощью перехватчика запросов, чтобы использовать этот токен доступа для будущих запросов.

Моя идея состоит в том, чтобы использовать метод ObjectGraph.plus() после того, как я получил токен доступа, но я не уверен, что это лучший способ сделать это.

Может ли кто-нибудь указать мне правильное направление или, может быть, есть пример проекта на github?


person AdrianoCelentano    schedule 09.01.2015    source источник


Ответы (1)


Ключ в том, чтобы всегда добавлять RequestInterceptor, а затем изменять, добавляет ли он заголовок.

class ApiHeaders implements RequestInterceptor {
  private String authValue;

  public void clearAuthValue() {
    authValue = null;
  }

  public void setAuthValue(String authValue) {
    this.authValue = authValue;
  }

  @Override public void intercept(RequestFacade request) {
    String authValue = this.authValue;
    if (authValue != null) {
      request.addHeader("Authorization", authValue);
    }
  }
}

Таким образом, вы можете внедрить свой синглтон ApiHeaders, когда вам нужно установить или очистить токен.

person Jake Wharton    schedule 09.01.2015
comment
Как мы можем вызвать setAuthValue с authValue во время выполнения при входе пользователя, если мы используем один NetworkModule в приложении. - person Jagdeep Singh; 08.02.2017
comment
@Jake Wharton Похожая проблема, с которой я столкнулся, не могли бы вы взглянуть stackoverflow.com/questions/45078720/ - person user606669; 13.07.2017
comment
@ Джейк Уортон, у нас в компании похожая проблема, не могли бы вы взглянуть? stackoverflow.com/q/46791074/5727805 Спасибо! - person MKaro; 17.10.2017