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

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

本文关键字:请求 用户 重定向 当前页 OAuth 何通过 新窗口 窗口      更新时间:2023-09-26

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

但是通过这种方式,用户被重定向到我的页面(到Facebook或Twitter),并且只有在输入正确的用户名&密码。这就像http://techcrunch.com在用户尝试发布tweet时所做的那样。

我记得在一些网站上,我看到我们可以不通过重定向用户连接,而是打开一个弹出窗口让用户输入凭据。验证完成后,弹出窗口关闭,主界面刷新有新内容。

这可能是一个非常简单的任务与javascript,但我仍然不能弄清楚。我可以在弹出窗口中打开身份验证URL,但如何获得结果& &;更新主页?

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

window.opener

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

window.opener.location.reload();

这段代码应该在你已经设置为成功回调url的oauth授权url上提供。

一般情况下,流程应该是:

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

我有一个后续问题:从Twitter实现的角度来看,我们是在新窗口还是在同一窗口中打开授权页面有关系吗?我的意思是,如果他们必须将我重定向到新窗口(我已经为授权页面打开了),他们必须将我重定向到相同的窗口(如果我没有打开授权页面的新窗口),那么twitter的实现是否会改变

相关文章: