使用Google App Engine和GWT进行用户身份验证

时间:2011-12-22 11:16:33

标签: google-app-engine gwt authentication

[抱歉我的英文,我是意大利人,我会尽我所能]

我正在尝试在我的网络应用中为拥有Google帐户的用户实施登录功能。我正在遵循本指南:http://code.google.com/intl/it-IT/webtoolkit/doc/latest/tutorial/appengine.html#user

在“LoginServiceImpl.java”

[...]
if (user != null) {
  loginInfo.setLoggedIn(true);
  loginInfo.setEmailAddress(user.getEmail());
  loginInfo.setNickname(user.getNickname());
  loginInfo.setLogoutUrl(userService.createLogoutURL(requestUri));
} else {
  loginInfo.setLoggedIn(false);
  loginInfo.setLoginUrl(userService.createLoginURL(requestUri));
}
[...]

的呼吁
userService.createLoginURL(requestUri);

返回一个这样的字符串:

/_ah/login?continue=http%3A%2F%2F127.0.0.1%3A8888%2FGoogleAccounts.html%3Fgwt.codesvr%3D127.0.0.1%3A9997

这意味着,为了允许用户登录,我必须将他重定向到这里

http://127.0.0.1:8888/_ah/login?continue=http%3A%2F%2F127.0.0.1%3A8888%2FGoogleAccounts.html%3Fgwt.codesvr%3D127.0.0.1%3A9997

但是这样做,我到达了一个白色背景和蓝色框的白页:

http://img528.imageshack.us/img528/8720/formy.png

以及我放在那里的任何电子邮件,即使是一个形式不好的电子邮件,我也被重定向到我的主页并且似乎成功登录,有类似的东西

if(user != null) {
  System.out.println("email = "+user.getEmail());
  System.out.println("nickname = "+user.getNickname());
  System.out.println("userId = "+user.getUserId());
  System.out.println("FederatedIdentity = "+user.getFederatedIdentity());
  System.out.println("AuthDomain = "+user.getAuthDomain());
  System.out.println("link to logout = "+userService.createLogoutURL("http://127.0.0.1:8888/GoogleAccounts.html?gwt.codesvr=127.0.0.1:9997"));
}

导致

email = blablabla
nickname = blablabla
userId = 12654892720623673200
FederatedIdentity = null
AuthDomain = gmail.com
link to logout = /_ah/logout?continue=http%3A%2F%2F127.0.0.1%3A8888%2FGoogleAccounts.html%3Fgwt.codesvr%3D127.0.0.1%3A9997

我期待某种重定向到google页面,要求我授权应用程序使用我的数据......我缺少什么?我做错了吗?

1 个答案:

答案 0 :(得分:5)

开发环境中,您只会看到“蓝框( ,如您所说 ”您可以在其中输入任何电子邮件ID以登录....

但是当您在Google App Engine服务器中部署应用时,用户将被重定向到实际的Google登录页面。

部署您的应用并尝试...