繁体   English   中英

如何通过打开新窗口执行OAuth请求,而不是从当前页面重定向用户?

[英]How can I do OAuth request by open new window, instead of redirect user from current page?

我已经通过Twitter和Facebook进行了OAuth身份验证。 目前,对于每个站点,我的服务器将用户重定向到指定的URL(例如,使用Twitter的http://api.twitter.com/oauth/authorize ),然后通过回调URL接收身份验证参数。

但通过这种方式,用户被重定向到我的页面(到Facebook或Twitter),并且只有在输入正确的用户名和密码后才会返回。 这就像http://techcrunch.com在用户尝试推文发布时的方式。

我记得在某个网站上,我看到我们可以通过重定向用户来连接,但是打开一个弹出窗口供用户输入凭据。 认证为completde后,弹出窗口关闭,主页面刷新新内容。

使用javascript这可能是一个非常简单的任务,但我仍然无法弄明白。 我可以在弹出窗口中打开身份验证URL,但是如何获取结果并更新主页?

假设您使用window.open()在弹出窗口中打开身份验证URL,您可以使用以下命令访问父窗口:

window.opener

重新加载父窗口(从弹出窗口)使用:

window.opener.location.reload();

此代码应在您已设置为oauth授权的成功回调网址的网址上提供。

一般来说,流程应该是:

  • 打开带有授权页面的弹出窗口(例如在twitter.com上)
  • 成功授权后,twitter会将用户重定向到您提供的URL(它会在同一个弹出窗口中打开)
  • 重新加载开启窗口(通过window.opener.location.reload()
  • 关闭弹出窗口本身(使用javascript是你想要的)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM