我目前正在创建一个基于和托管的Glassware
应用程序。一切都很好......除了由于某种原因无法为提交 POST 请求的用户找到 Credentials 对象。Java
Google App Engine
AuthUtil
当用户第一次导航到我的应用程序的主页并登录/验证时,Google Account
一切正常。第一张卡片被发布到他们的时间线上,服务器会适当地响应所有传入的 POST。但是如果服务器闲置大约 15-20 分钟,那么所有 POST 请求都会开始失败。
经过一些调试后,我发现在闲置一段时间后AuthUtil.getCredential
不再返回用户的对象。Credential
解决此问题的唯一方法是强制用户返回我的主页并重新登录/验证。
这是我的应用程序的 servlet 在“doPost”中使用的代码片段:
Notification notification = jsonFactory.fromString(notiString, Notification.class);
String userId = notification.getUserToken();
LOG.info("SERVLET - Request contained user token: " + userId);
Credentials currUser = AuthUtil.getCredential(userId);
if (currUser != null)
{
LOG.info("SERVLET - User found");
}
else
{
LOG.severe("SERVLET - User NOT FOUND");
}
注意:我可以确认所有传入的 POST 都包含用户的令牌标识符字符串。