目前,我有一个基于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
答案 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_to
从return_to
页面回复您的应用(并公开一些回调方法通过JSNI:https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI#calling)