处理过期的身份验证令牌android客户经理

时间:2011-08-30 12:18:07

标签: android authentication

每次我需要使用AccountManager中的Google身份验证令牌发出请求时,我是否应该无效并请求新令牌?或者我是否有“过期时间”时间戳我可以用来查看是否有仍然有效。

4 个答案:

答案 0 :(得分:1)

Google服务的HTTP响应中没有提供到期时间,所以我认为您需要确保如果auth-token无法提供访问权限,您可以将其用作获取新身份验证令牌的触发器。或者,您可以在每次应用程序启动时获取新令牌,或者创建自己的超时。

http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html

答案 1 :(得分:1)

查看HTTP响应,状态代码为302(它重定向您提供身份验证令牌),标题中的“Set-Cookie”字段不存在。你可以关掉它。

if (res.getStatusLine().getStatusCode() == 302 && res.getHeaders("Set-Cookie").length == 0) {
    // we need a new token
    // invalidate account manager logic here
}

未能从Google获取该Cookie似乎表明是时候从AccountManager获取新令牌了。

答案 2 :(得分:0)

由于尚未接受答案: 我通过在try块中触发我的请求,然后捕获任何异常并检查它是否为if (e.getMessage().equals("401 Unauthorized")) { ... }的401来实现。 然后,使auth令牌无效,请求新的令牌并重试该请求。

答案 3 :(得分:-2)

当您知道令牌已过期时,您需要致电invalidateAuthToken(String, String)。即当请求因验证错误而失败时。