1

您通常在 GWT 应用程序中使用 OpenID 进行登录的操作如下:

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

returnToUrl 是您希望在验证后重定向回来的当前 URL。这很好用,如果 returnToUrl 是一个简单的 URL,比如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=卡片

在 OpenID 注册期间,用户会被重定向几次,如果 returnToUrl 的 url 编码不正确,它的一部分就会丢失。

正如我在这里发现的那样,即使在某些情况下,您也必须对 URL 进行双重编码。但这次我无法正确编码 URL。

所以,我的问题:

  • 您是否对 Gmail 上下文小工具中的 OpenID-return-to-URL 有什么提示?

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

4

1 回答 1

2

您不能在小工具中使用 openId 登录,因为您的小工具由小工具容器代理。您必须打开一个弹出窗口来进行 openId 登录并将 opensocialId 关联到您在服务器上的 openId 身份。您必须在服务器上保留 openSocialId 和用户身份之间的关系。从那时起,gadget 通过请求其 opensocialId 的关系来知道它的身份。

另请参阅http://code.google.com/googleapps/marketplace/best_practices.html#gadget_sso

于 2011-11-11T11:32:29.880 回答