Android Модификация и аутентификация JWT - PullRequest
0 голосов
/ 22 апреля 2020

Я использую аутентификацию JWT и храню токен аутентификации в общем предпочтении. Я не могу найти способ добавить заголовок авторизации для модифицированного клиента. Вот почему я получаю 401 ошибку для моего сетевого вызова со второго раза, когда он работает. Как это решить?

@Module
public class AppRetrofitModule {


private static final String TAG = "AppRetrofitModule";

private static Retrofit.Builder builder
        = new Retrofit.Builder()
        .baseUrl(Config.REST_BASE_URL)
        .addConverterFactory(GsonConverterFactory.create());

private static Retrofit retrofit = builder.addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build();

private static OkHttpClient.Builder httpClient
        = new OkHttpClient.Builder();


private static HttpLoggingInterceptor logging
        = new HttpLoggingInterceptor()
        .setLevel(HttpLoggingInterceptor.Level.BASIC);


@Singleton
@Provides
public Retrofit provideRetrofit(AppPreferencesHelper appPreferencesHelper) {


    String authToken = "Bearer " + appPreferencesHelper.getAccessToken();
    Log.d(TAG, "provideRetrofit: " + authToken);


    httpClient.addInterceptor(new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request original = chain.request();

            Response response = chain.proceed(original);


            Request request = original.newBuilder()
                    .header("Authorization", authToken)
                    .method(original.method(), original.body()).build();
            return chain.proceed(request);
        }
    });

   if (!httpClient.interceptors().contains(logging)) {
       httpClient.addInterceptor(logging);
        httpClient.connectTimeout(60, TimeUnit.SECONDS);
        httpClient.callTimeout(60, TimeUnit.SECONDS);

        builder.client(httpClient.build());
        retrofit = builder.build();
    }

    return retrofit;
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...