在运行时使用 Dagger 添加 Retrofit Requestinterceptor

Add Retrofit Requestinterceptor with Dagger at runtime

我正在使用匕首和改造。我用 Dagger 注入我的 Retrofit 服务。

现在我想做一个授权请求来获取 accessToken。

之后我想用请求拦截器增强我的 api 模块,以便将此访问令牌用于未来的请求。

我的想法是在收到访问令牌后使用 ObjectGraph.plus() 方法,但我不确定这是否是最好的方法。

有人能给我指出正确的方向吗?github 上是否有示例项目?

关键是总是加RequestInterceptor然后改是否加header.

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 单例。