【发布时间】:2016-07-18 14:29:13
【问题描述】:
我们有一个安卓应用,我们应该在上面调用一些网络服务。 后端服务基于承载授权算法。当用户登录时,服务器会给他一个访问令牌,这个令牌的有效期约为一个小时。 当我们调用服务时,我们将此令牌作为 HTTP 标头发送。如果令牌有效,则可以。但是当令牌无效时,服务器会给我们一个错误,我们必须调用另一个服务来获取新令牌并用这个新令牌调用该服务。 我的问题是,是否有任何模式可以实现此工作流程? 或者关于这种网络服务调用的任何其他想法。
在此致谢
【问题讨论】:
-
我可以理解您的用例,但我似乎无法弄清楚真正的问题是什么。你想改写你的问题并专注于问具体的事情吗?实际上,这种身份验证框架在今天是相当标准的,您通常会请求令牌,服务会给您一个 refreshToken 和一个访问令牌。
Refresh token用于在旧的access token过期时获取新的access token。身份验证后,您将使用access_token调用需要身份验证来识别您自己的服务。 -
@SamuelToh 我需要一个设计模式。我想我们需要一种方法来处理这个问题,以防其中一个 Web 服务调用失败。我不知道也许我们应该简单地分别调用这些服务。
-
我不知道这个问题的任何设计模式。我认为您只需要阅读外部方的 Web 服务文档并适当地处理异常即可。例如。如果它返回某个 HTTP 代码和错误,表明访问令牌已过期,则该代码应调用适当的令牌刷新 API 并使用新的访问令牌再次重试 Web 服务。您的解决方案在很大程度上取决于外部方如何设计其端点和异常。
标签: java android web-services rest