Я пытаюсь программно добавить заголовок авторизации в мои вызовы API с помощью retrofit и rxjava2, поэтому я добавил к нему перехватчик okhttp3.Это мой полный код:
public interface APIService {
class ServiceInterceptor implements Interceptor{
@NonNull
@Override
public okhttp3.Response intercept(@NonNull Chain chain) throws IOException {
Request request = chain.request();
if (request.header("No-Authentication") == null){
SharedPreferences sharedPref = ???.getSharedPreferences(USER, Context.MODE_PRIVATE); <---
request = request.newBuilder()
.addHeader("Authorization", "JWT " + sharedPref.getString("auth_token", null))
.build();
}
return chain.proceed(request);
}
}
OkHttpClient apiClient = new OkHttpClient().newBuilder()
.addInterceptor(new ServiceInterceptor())
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://192.168.1.8:8000/api/v1/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(apiClient)
.build();
@GET("rest-auth/user/")
Single<Response<User>> getUserDetails();
@POST("rest-auth/login/")
@Headers("No-Authorization: true")
Single<Response<AuthUserResponse>> loginUser(@Body LoginRequest body);
@POST("rest-auth/registration/")
@Headers("No-Authorization: true")
Single<Response<AuthUserResponse>> signupUser(@Body SignupRequest body);
}
Проблема в том, что я не могу получить auth_token из sharedPreferences, потому что я не знаю, как передать ему контекст.Какие-либо предложения?Спасибо.