刷新令牌身份验证器不断返回401

时间:2018-12-19 17:58:36

标签: android rest retrofit retrofit2 okhttp3

我需要刷新401上的令牌-未经授权使用Retrofit / okhttp3。我的代码有什么问题?

MainActivity

OkHttpClient.Builder httpClient =新的OkHttpClient.Builder();

    httpClient.addInterceptor(new Interceptor() {

        @Override
        public okhttp3.Response intercept(Chain chain) throws IOException {
            Request request = chain.request().newBuilder().addHeader("Authorization", "Bearer " + hereToken).build();
            return chain.proceed(request);
        }
    });

    httpClient.authenticator(new TokenAuthenticator());

    Gson gson = new GsonBuilder()
            .setLenient()
            .create();

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .client(httpClient.build())
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build();

    ServiceAPI gerritAPI = retrofit.create(ServiceAPI.class);

    Call<ClientDetails> call = gerritAPI.getRefreshTokenDetails();

    call.enqueue(new Callback<ClientDetails>() {
        @Override
        public void onResponse(Call<ClientDetails> call, Response<ClientDetails> response) {
            System.out.println("response code " + response.code());
        }

        @Override
        public void onFailure(Call<ClientDetails> call, Throwable t) {
            System.out.println("fail");

            t.printStackTrace();
        }
    });

TokenAuthenticator

Request.Builder newRequest = response.request()。newBuilder();

    accessToken = "Bearer tokenXXX";

        return newRequest
                .header("Authorization", accessToken)
                .build();

}

始终为401,令牌正确!

0 个答案:

没有答案