Javascript 如何在弹出窗口中拦截重定向?

Javascript 如何在弹出窗口中拦截重定向?,javascript,Javascript,我正在编写一个需要用户授权的Chrome应用程序。比如说,一个用户想要分享一条推特到一个网站,然后点击一个按钮。我将首先在Chrome存储中搜索用户对该网站的访问令牌。如果不可用,我将使用打开一个窗口 window.open(url); 其中url是网站提供的授权API。然后用户将输入登录信息(用户名/密码),并被重定向到由访问令牌所需的代码连接的回调 我不希望用户被重定向,我需要那个代码。 在用户完成授权后,我如何拦截重定向、获取代码并关闭窗口?如果回调URL在您的控制下,您能否尝试使用一些

我正在编写一个需要用户授权的Chrome应用程序。比如说,一个用户想要分享一条推特到一个网站,然后点击一个按钮。我将首先在Chrome存储中搜索用户对该网站的访问令牌。如果不可用,我将使用打开一个窗口

window.open(url);
其中url是网站提供的授权API。然后用户将输入登录信息(用户名/密码),并被重定向到由访问令牌所需的代码连接的回调

我不希望用户被重定向,我需要那个代码。
在用户完成授权后,我如何拦截重定向、获取代码并关闭窗口?

如果回调URL在您的控制下,您能否尝试使用一些javascript和window.opener将代码传递回,然后window.close()关闭弹出窗口?

如果回调URL在您的控制下,您可以尝试在window.opener中使用一些javascript来传递代码,然后window.close()弹出窗口吗?

OAuth流(以及其他重定向控制流)使用chrome中的匹配模式进行控制。匹配模式允许您通过侦听浏览器触发的特定URL来连接到流中

这里有更多信息-

OAuth流(以及其他重定向控制流)使用chrome中的匹配模式进行控制。匹配模式允许您通过侦听浏览器触发的特定URL来连接到流中


这里有更多信息-

完全取决于重定向是如何发生的。。。如果您只是提交表单,则需要绑定到表单
submit
事件,并通过AJAX自己执行提交。一旦浏览器离开您的页面,您就不能“截获”重定向。您是说oauth 2流吗?我认为Chrome匹配模式可以让你连接到重定向流中,所以你想在没有用户许可的情况下获得授权码?这完全违背了授权点,你不能这么做。@minitech不,我有用户的权限。请注意,用户已经输入了登录信息(用户名/密码),然后被重定向到回调url,这就是我希望代码出现的地方。还记得你用Facebook帐户登录幻灯片吗?您在弹出窗口中输入了您的facebook帐户。@JohnP是的,OAuth2流,但重定向在弹出窗口中。有没有机会进入它?完全取决于重定向是如何发生的。。。如果您只是提交表单,则需要绑定到表单
submit
事件,并通过AJAX自己执行提交。一旦浏览器离开您的页面,您就不能“截获”重定向。您是说oauth 2流吗?我认为Chrome匹配模式可以让你连接到重定向流中,所以你想在没有用户许可的情况下获得授权码?这完全违背了授权点,你不能这么做。@minitech不,我有用户的权限。请注意,用户已经输入了登录信息(用户名/密码),然后被重定向到回调url,这就是我希望代码出现的地方。还记得你用Facebook帐户登录幻灯片吗?您在弹出窗口中输入了您的facebook帐户。@JohnP是的,OAuth2流,但重定向在弹出窗口中。有没有机会连接到它?是的,我定义了回调URL。“把代码传回去”是什么意思?你介意详细说明一下吗?window.opener指的是最初调用window.open的父窗口-你可以访问它并调用javascript函数等等。因此,你可以做一些类似于
window.opener.codeserved('thecode')的事情
,然后该函数将使用代码设置一个变量,并在弹出窗口上调用.close()。是的,我定义了回调URL。“将代码传递回”是什么意思?您介意详细说明一下吗?window.opener指的是最初调用window.open的父窗口-您可以访问它并调用javascript函数等等。因此,您可以执行类似于
window.opener.codereceved('thecode')
的操作,然后该函数将使用代码设置一个变量,并在弹出窗口上调用.close()。