每次我需要使用AccountManager
中的Google身份验证令牌发出请求时,我是否应该无效并请求新令牌?或者我是否有“过期时间”时间戳我可以用来查看是否有仍然有效。
答案 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)。即当请求因验证错误而失败时。