用spring android处理401错误的最佳方法

用spring android处理401错误的最佳方法,android,spring,oauth-2.0,spring-android,Android,Spring,Oauth 2.0,Spring Android,我有一个android应用程序,它使用SpringAndroid库与我的RESTfulAPI通信。我不确定当我的客户端的令牌过期时如何处理该场景。我希望捕获任何401错误,只需获取一个新令牌并重试请求 我已经创建了一个ResponseErrorHandler并将其连接到我的rest模板: public class UnauthorizedErrorHandler implements ResponseErrorHandler { .... public void handleE

我有一个android应用程序,它使用SpringAndroid库与我的RESTfulAPI通信。我不确定当我的客户端的令牌过期时如何处理该场景。我希望捕获任何401错误,只需获取一个新令牌并重试请求

我已经创建了一个ResponseErrorHandler并将其连接到我的rest模板:

public class UnauthorizedErrorHandler implements ResponseErrorHandler { 
    ....
    public void handleError(ClientHttpResponse response) throws IOException {
        if (response.getStatusCode().value() == HttpStatus.SC_UNAUTHORIZED) { // 401 error
            // fetch a new token

            // Retry request now that we have a new token???? 
        }
    }
}

我的问题是,我无法访问响应错误处理程序中的原始请求。除非我遗漏了什么,否则这个策略似乎是合理的,但我不知道如何让它起作用。对于任何使用OAuth令牌的客户端来说,这似乎也是一个典型的场景,因此希望有人能为我指出正确的方向。

如果令牌已过期,那么您应该要求用户再次登录

设想一个用户删除了你的OAuth应用程序访问权限,你的应用程序将收到一个过期的令牌或类似错误,你应该让该用户登录并再次授予你的应用程序访问权限


如果您不是指OAuth令牌,而是指您自己的API,那么您应该创建某种机制来更新客户端使用的令牌。例如,您可以在响应中发送带有新令牌的标题,要求用户从该点开始使用新值,或作为响应正文的一部分,或请求令牌交换的推送通知,等等。

Robert,感谢您的响应!抱歉,我想我应该更清楚,但我使用的是刷新令牌,因此不需要重新验证,除非刷新令牌也已过期。