我有一个Android应用程序,它使用spring android库与我的restful api进行通信。我的客户端令牌到期时,我不确定如何处理方案。我想要的是捕获任何401错误并简单地获取新令牌并重试请求。
我创建了一个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????
}
}
}
我的问题是我无法访问Response错误处理程序中的原始请求。除非我遗漏了一些东西,否则这个策略似乎是合理的,但我不确定如何让它发挥作用。对于使用OAuth令牌的任何客户来说,这似乎也是一个典型的场景,所以希望有人可以指出我正确的方向。
答案 0 :(得分:1)
如果令牌已过期,则应要求用户再次登录。
考虑用户删除您的OAuth应用访问权限,您的应用会收到过期令牌或类似错误,您应该让用户登录并再次访问您的应用。
如果您没有引用OAuth令牌,而是您自己的API,那么您应该创建某种机制来更新客户端使用的令牌。例如,您可以在响应中发送带有新令牌的标头,要求用户从该点开始使用新值,或者作为响应正文的一部分或请求令牌交换的推送通知等。