我正在使用 Dagger 和 retrofit 。我用 Dagger 注入(inject)了我的 Retrofit 服务。

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

之后我想用一个请求拦截器来增强我的 api 模块,以便在以后的请求中使用这个访问 token 。

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

有人可以指出我正确的方向,或者 github 上是否有示例项目?

最佳答案

关键是始终添加 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);
    }
  }
}

通过这种方式,您可以在需要设置或清除 token 时注入(inject) ApiHeaders 单例。

关于android - 在运行时使用 Dagger 添加 Retrofit Requestinterceptor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27868511/

10-10 20:06