Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google Glass Java-AuthUtil未找到用户凭据_Java_Google App Engine_Google Mirror Api_Google Glass - Fatal编程技术网

Google Glass Java-AuthUtil未找到用户凭据

Google Glass Java-AuthUtil未找到用户凭据,java,google-app-engine,google-mirror-api,google-glass,Java,Google App Engine,Google Mirror Api,Google Glass,我目前正在创建一个Glassware应用程序,它基于Java并托管在googleappengine上。一切都很顺利。。。除非出于某种原因,AuthUtil无法为提交POST请求的用户找到凭据对象 当用户第一次导航到我的应用程序主页并使用他们的Google帐户登录/验证时一切正常。第一张卡片被发布到他们的时间轴上,服务器对所有传入的帖子做出适当的响应。但是如果服务器闲置15-20分钟,那么所有POST请求都会失败 经过一些调试后,我发现AuthUtil.getCredential在闲置了一小段时间

我目前正在创建一个
Glassware
应用程序,它基于
Java
并托管在
googleappengine
上。一切都很顺利。。。除非出于某种原因,
AuthUtil
无法为提交POST请求的用户找到凭据对象

当用户第一次导航到我的应用程序主页并使用他们的
Google帐户登录/验证时
一切正常。第一张卡片被发布到他们的时间轴上,服务器对所有传入的帖子做出适当的响应。但是如果服务器闲置15-20分钟,那么所有POST请求都会失败

经过一些调试后,我发现
AuthUtil.getCredential
在闲置了一小段时间后不再返回用户的
Credential
对象。纠正这种情况的唯一方法是强制用户返回我的主页并重新登录/验证

下面是我的应用程序的servlet在“doPost”中使用的代码片段:


注意:我可以确认所有传入的帖子都包含用户的令牌标识符字符串。

AuthUtil是示例代码中包含的实用程序类。请随意深入研究,以解决此问题。以下是我要研究的第一件事:您在通知中获得的用户ID合理吗?转到App Engine管理控制台并检查数据存储。您是否看到与该用户ID匹配的记录?否则,其他一些代码可能正在损坏/清除them@JennyMurphy谢谢你的回复。我收到的用户ID只有21个字符长,并且是数字。这是否合理?其次,我尝试研究AuthUtil。
AuthUtil.getCredential(字符串userId)
中唯一的代码是
AuthUtil.newAuthorizationCodeFlow().loadCredential(userId)
。我无法对此进行更深层次的调试,因为AuthorizationCodeFlow是来自誓言客户端jar的私有类,我无法单步执行。@JennyMurphy进一步澄清…我的数据存储在我定义的表中包含一个具有匹配用户id的记录。当我手动检查数据时,我可以找到与发送通知的用户相关的记录,但我无法发布任何时间线更新,因为
AuthUtil.getCredential(String userId)
无法返回凭证对象。数字ID有意义。loadCredential方法正在间接调用CredentialStore上的load方法。快速入门附带了一个使用内存凭证存储的应用程序:如果您使用的是app engine,那么您将需要使用不同的实现,如Java Google API客户端库附带的AppingineCredentialStore。
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");
}