我如何通过打开新窗口来做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在用户尝试发布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的实现是否会改变
相关文章:
- 请求准备一个文件并返回路径,允许用户在准备好时下载
- DreamFactory REST API POST休息/用户/会话请求总是在IE9中返回错误
- 如何循环请求用户输入,直到用户在Acrobatneneneba XI中输入信息
- 使用javascript在post请求中传递用户输入变量
- 检查请求的用户是否是django中的所有者
- 在每个 AJAX 请求(Sencha Touch 2)中发送用户详细信息(会话令牌)
- 在设置用户后,从 JavaScript JSON 请求中获取 Web 服务 (asmx) ASP.NET Windows
- 在facebook用户发送邀请请求后调用ajax调用
- 从用户id和电子邮件的.csv文件在facebook上发送好友请求
- URL中用户@的几个请求导致“;违反政策通知;来自Google AdSense
- 当用户在命令提示符中选择任何字符串时,节点Js不为任何请求提供服务
- 可以'在尝试使用chai请求代理为测试维护用户会话时,t在发送标头后设置标头出错
- 检测被用户操作中断的 Ajax 请求
- 如果用户发送另一个请求,请使用 .abort() 取消现有的 ajax 请求
- 获取 ajax 发布请求的用户输入
- 仅在某些请求上保存用户会话
- Javascript/ AngularJS请求用户下载iOS/ Android应用
- 请求用户共享的JS对话框;消息“;参数不起任何作用
- 如何请求用户输入文件位置,以便在Eclipse(Java)程序中使用和读取它
- 当用户点击链接访问另一个网站时,我如何请求用户留下来.但是如果他们想在我的网站上访问另一个页面,则没有要求