为什么翻新身份验证器不刷新令牌?

时间:2018-06-30 18:35:30

标签: android retrofit2 authenticator

我正在使用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();
    }
}
}

这里的服务持有者是对webservices实现类的引用

有什么主意我做错了吗?

0 个答案:

没有答案
相关问题