0
我有一个Appengine/GWT应用程序,并实现了OAuth。它有效,但我现在在Oauth回调中重定向。此重定向不会提供流畅的用户体验,因为应用程序在登录后会重新加载。如何在没有重定向的OAuthCallBack后返回客户端
这是我的回调代码:
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String oauth_provider = req.getParameter("oauth_provider");
String oauth_token = req.getParameter("oauth_token");
String oauth_verifier = req.getParameter("oauth_verifier");
String redirect = "http://www.exmaple.com";
OAuthProvider oAuthProvider = OAuthProvider.valueOf(oauth_provider);
String providerUserId = createUser(oAuthProvider, oauth_verifier, oauth_token); // which creates the user in my application if not yet existing
redirect = redirect.concat("?oauth_provider=" + oAuthProvider.name() + "&user=" + providerUserId);
resp.sendRedirect(redirect);
}
的客户端程序将使用他的URL参数,以获得我的应用程序的用户对象。
有没有更好的方式来回到客户端,没有重定向?
是的,这是一种方法。从客户端JavaScript谷歌现在在他们的库中有一个不重定向的新弹出模式。相反,它会启动一个弹出窗口,父级从URL片段抓取刷新令牌。更平滑但只有更新的浏览器支持该弹出模式。 Id使它成为一个答案,但没有时间添加链接到移动文档的链接:) – 2015-04-07 04:01:12
我将不胜感激,如果你可以提供链接,当你在网上.. :-) – peternees 2015-04-08 20:27:19
对不起,我找不到它,但从这里开始并研究新的“弹出”模式。这将在弹出窗口中显示auth而不是新窗口,这样可以更轻松地从URL重定向https://developers.google.com/identity/protocols/OAuth2UserAgent中的片段中捕获令牌。我认为谷歌+登录按钮的官方文档可能更好地解释弹出的东西 – 2015-04-08 22:38:22