2014-11-21 80 views
2

我有一个android应用程序,它使用春天的android库与我的宁静api沟通。当我的客户令牌过期时,我不知道如何处理这种情况。我想要捕获任何401错误,只需获取新的令牌并重试请求。最好的方法来处理401与春天的错误android

我创建了一个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令牌的客户来说,这似乎也是一个典型的场景,所以希望有人能指出我正确的方向。

回答

1

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

想想用户删除您的OAuth应用程序访问权限,您的应用程序将收到过期令牌或类似错误,您应该让用户登录并再次访问您的应用程序。

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

+0

罗伯特,谢谢你的回应!对不起,我想我应该已经更清楚了,但我使用刷新令牌,所以没有必要重新进行身份验证,除非刷新令牌已过期。 – bmurmistro 2014-11-26 00:39:36