我很沮丧。我正在尝试使用Google App Engine和Java作为服务器,在Android上构建回合制多人在线游戏。
它们似乎是完美的搭配。Android需要一个Google账户,而GAE使用Google账户进行身份验证,同时又是免费且可扩展的。
因此,在假期之前,我能够使用Android 2.0中的新AccountManager API从我的Android客户端对我的GAE应用进行身份验证。以下代码允许您访问用户的Google账户的AuthToken,然后将其用于身份验证,以便用户不必手动输入他们的账户用户名和密码:
我当时能够将生成的AuthToken字符串附加到适当的URL上,并获得有效的cookie,然后可以将其用于所有进一步的请求。唯一的问题是,上周某个时候它突然停止工作了。现在当我尝试使用上述代码中的AuthToken时,我没有收到cookie,并且我的代码因缺少cookie而抛出NullPointerException。
当我回到旧的方式,即用户手动输入他们的Google用户名和密码并从 "https://www.google.com/accounts/ClientLogin" 获取AuthToken时,它就可以正常工作。
请告诉我有人已经构建了一个Android客户端,用于使用用户手机上的Google帐户的AuthToken访问Google应用引擎应用程序,并给我一些线索为什么这不再起作用。
我真的很想让这个工作。我的替代方案是要求用户输入他们的凭据(这很笨拙,他们不应该这样做),或者选择另一个服务器解决方案。
提前致谢。
它们似乎是完美的搭配。Android需要一个Google账户,而GAE使用Google账户进行身份验证,同时又是免费且可扩展的。
因此,在假期之前,我能够使用Android 2.0中的新AccountManager API从我的Android客户端对我的GAE应用进行身份验证。以下代码允许您访问用户的Google账户的AuthToken,然后将其用于身份验证,以便用户不必手动输入他们的账户用户名和密码:
AccountManager mgr = AccountManager.get(this);
Account[] accts = mgr.getAccountsByType("com.google");
Account acct = accts[0];
AccountManagerFuture<Bundle> accountManagerFuture = mgr.getAuthToken(acct, "ah", null, this, null, null);
Bundle authTokenBundle = accountManagerFuture.getResult();
String authToken = authTokenBundle.get(AccountManager.KEY_AUTHTOKEN).toString();
我当时能够将生成的AuthToken字符串附加到适当的URL上,并获得有效的cookie,然后可以将其用于所有进一步的请求。唯一的问题是,上周某个时候它突然停止工作了。现在当我尝试使用上述代码中的AuthToken时,我没有收到cookie,并且我的代码因缺少cookie而抛出NullPointerException。
当我回到旧的方式,即用户手动输入他们的Google用户名和密码并从 "https://www.google.com/accounts/ClientLogin" 获取AuthToken时,它就可以正常工作。
请告诉我有人已经构建了一个Android客户端,用于使用用户手机上的Google帐户的AuthToken访问Google应用引擎应用程序,并给我一些线索为什么这不再起作用。
我真的很想让这个工作。我的替代方案是要求用户输入他们的凭据(这很笨拙,他们不应该这样做),或者选择另一个服务器解决方案。
提前致谢。