我目前正在创建一个Glassware
应用,该应用基于Java
并托管在Google App Engine
上。一切都很好......除了某些原因AuthUtil
停止能够为提交POST请求的用户找到Credentials对象。
当用户首次导航到我的应用程序的主页并使用他们的Google Account
登录/验证时,一切正常。第一张卡被发布到他们的时间线,服务器对所有传入的POSTS做出适当的响应。但是如果服务器闲置大约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都包含用户的令牌标识符字符串。