Gwt> openid在(浏览器)弹出窗口中

时间:2012-06-11 10:58:26

标签: gwt openid

目前,我有一个基于GWT的应用程序“/app.htm”

它显示一个openId登录按钮,用于执行

  

Window.Location.assign("/openidServlet?return=/app.htm")

这个servlet准备一些东西来调用google的openid页面,然后返回到返回的url。这是有效的,但app.html也会显示谷歌地图,重新加载时这很重。

我想在新窗口(一种弹出窗口)中执行此操作以避免重新加载'app.htm'

在一个完美的世界中,当openid窗口关闭时,它会向app.htm发送一些内容,说“准备好了,再次执行loginRpc查询”

我已经尝试在Frame中进行此操作,但我得到了

  

Refused to display document because display forbidden by X-Frame-Options

使用gwt2.4和NO gae

1 个答案:

答案 0 :(得分:1)

您想要使用OpenID UI Extension。 JavaScript中有sample code,可以相对容易地移植到GWT(或使用JSNI更容易包装)。

基本上,它使用window.open()在弹出窗口中启动OpenID签名过程,并监视窗口对象(由window.open()返回,需要在GWT中使用JSNI,为{{1} }不会返回它)以查看它是否已关闭(如果您愿意,您的com.google.gwt.user.client.Window#open页面可能包含一个自动关闭窗口的脚本)。
当弹出窗口关闭时,您可以重试您的请求,如果您检测到用户仍未登录,则可能会再次启动签名过程。

他们似乎没有使用它,但我想您可以使用return_toreturn_to页面回复您的应用(并公开一些回调方法通过JSNI:https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI#calling