使用GWT在GMail上下文小工具中登录OpenID

时间:2011-03-30 14:53:33

标签: java google-app-engine gwt openid gmail-contextual-gadgets

您在GWT应用程序中通常使用OpenID登录的内容如下:

LoginInfo loginInfo = new LoginInfo();
UserService userService = UserServiceFactory.getUserService();
loginInfo.setLoginUrl(userService.createLoginURL(returnToUrl));
return loginInfo();

其中returnToUrl是您要在验证后重定向的当前网址。如果returnToUrl是一个像http://mydomain.com/go/here

这样的简单网址,这样可以正常工作

但是当我的应用程序作为GMail上下文小工具运行时,它被包装在一个框架中,该框架从谷歌代理(googleusercontent.com)获取其内容。所以这就是 - 一点点复杂 - 我希望重定向回框架中的URL:

https://jtphjhg2q9h3ul31ifsbvm5hv7717h49-a-gm-opensocial.googleusercontent.com/gadgets/ifr?url=http%3A%2F%2Fgorgactsgadget.appspot.com%2Fgorgadget%2Fcom.innubili.gorgacts.client.Gorgadget.gadget.xml&container=gm&view=card

在OpenID注册期间,用户会被多次重定向,如果returnToUrl没有正确地进行url编码,则部分内容会丢失。

当我发现here时,您甚至在某些情况下必须对URL进行双重编码。但是这次我无法正确编码URL。

所以,我的问题:

  • 您是否有任何提示在Gmail上下文小工具中OpenID-return-to-URL应该是什么样的?

  • 或者可能是一个更简单的问题:还有其他办法,我可以检索当前登录的GMail用户的电子邮件吗?

1 个答案:

答案 0 :(得分:2)

您无法在小工具中使用openId登录,因为您的小工具由小工具容器代理。 您必须打开一个弹出窗口来执行openId登录,并将opensocialId与服务器上的openId标识关联。您必须保持openSocialId与服务器上的用户身份之间的关系。从那时起,小工具通过请求其opensocialId的关系来了解其身份。

另见http://code.google.com/googleapps/marketplace/best_practices.html#gadget_sso