Почему Retrofit Authenticator не обновляет токен? - PullRequest
0 голосов
/ 30 июня 2018

Я создаю приложение с помощью Retrofit, Dagger и т. Д. И использую Authenticator для обновления токена. Я установил время истечения токена на 1 минуту, чтобы посмотреть, запущен ли Аутентификатор и нет.

Ниже моя реализация Authenticator

public class TokenAuthenticator implements Authenticator {

private ServiceManagerHolder serviceHolder;

@Inject
public TokenAuthenticator(@NonNull ServiceManagerHolder serviceHolder) {
    this.serviceHolder=serviceHolder;

}

@Nullable
@Override
public Request authenticate(Route route, Response response) throws IOException {
    if(serviceHolder.serviceManager() ==null)
    {
        return null;
    }

    if(response.code()==401) {
        Request request = response.request();
        serviceHolder.serviceManager().refreshAccessToken(GRANT_TYPE_REFRESH,
                KikoConstants.AUTH_TOKEN_TIMEOUT, ANDROID_CLIENT_ID,
                CLIENT_SECRET,
                REFRESH_TOKEN)
                .enqueue(new Callback<GetTokenResponse>() {
                    @Override
                    public void onResponse(Call<GetTokenResponse> call, retrofit2.Response<GetTokenResponse> response) {
                        Log.e("Authenticator refreshing token :::", "In progress");
                        //code to save the token
                        request.newBuilder().header("Authorization", "Bearer " + newAccessToken);
                    }

                    @Override
                    public void onFailure(Call<GetTokenResponse> call, Throwable t) {
                        Log.e("Error refreshing token",t.getMessage());
                    }
                });
        return response.request();
    }else
    {
        return response.request();
    }
}
}

Владелец сервиса - это ссылка на класс реализации веб-сервисов

Есть идеи, что я делаю не так?

...