我有一个 android 应用程序,它使用 spring android 库与我的 restful api 进行通信。当我的客户的 token 过期时,我不确定如何处理这种情况。我想要的是捕获任何 401 错误并简单地获取一个新 token 并重试请求。
我创建了一个 ResponseErrorHandler 并将其连接到我的其余模板:
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 token 的客户端的典型场景,因此希望有人能为我指明正确的方向。
最佳答案
如果 token 已过期,那么您应该要求用户重新登录。
想想用户删除您的 OAuth 应用程序访问权限,您的应用程序将收到过期 token 或类似错误,您应该让用户登录并再次授予您的应用程序访问权限。
如果您指的不是 OAuth token ,而是您自己的 API,那么您应该创建某种机制来更新客户端使用的 token 。例如,您可以在响应中发送带有新 token 的 header ,要求用户从那时起开始使用新值,或者作为响应正文的一部分或请求 token 交换的推送通知等。
关于android - 使用 spring android 处理 401 错误的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27053388/