認証されたユーザーの取得に問題があります。その前に、トークンとユーザーIDを取得しました。次に、アクセストークンとIDを使用してサーバーからユーザーを取得する必要があります。 ヘッダー形式があります
今、インターセプターを使用してユーザートークンとIDでヘッダーを追加しようとしています。
私のコード:
Interceptor interceptor = new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request newRequest = chain.request().newBuilder()
.addHeader("Accept", "application/json")
.addHeader("authorization", token) <-??
.addHeader("driver_id", id) <-??
.build();
return chain.proceed(newRequest);
}
};
OkHttpClient.Builder okHttpBuilder = new OkHttpClient.Builder();
okHttpBuilder.addInterceptor(interceptor);
OkHttpClient okHttpClient = okHttpBuilder.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
インターフェース:
@GET("driver/v1/driver")
Call<Driver> getAuthorizedDriver();
さまざまなバリアントが401エラーをスローし、何をすべきかわからないログ:
I/Response code: 401
I/Response message: Unauthorized`
わかった。次のようになります。
@GET("driver/v1/driver")
Call<Driver> getAuthorizedDriver(@Header("authorization") String auth);
そして認証:
Call<Driver> call = apiInterface.getAuthorizedDriver("Token token=" + token + ", driver_id=" + id);
メソッド呼び出しを介してヘッダー値を渡してみてください。
@GET("driver/v1/driver")
Call<Driver> getAuthorizedDriver(@Header("authorization") String token,
@Header("driver_id") Integer id);
また、インターセプターコードのこの巨大なチャンクを処理する必要はありません