通过弹出窗口进行 Twitter OAuth

Posted

技术标签:

【中文标题】通过弹出窗口进行 Twitter OAuth【英文标题】:Twitter OAuth via a popup 【发布时间】:2010-12-25 02:41:46 【问题描述】:

我想知道如何通过弹出窗口进行 twitter OAuth,即在弹出窗口中加载 Oauth 页面并让回调关闭子窗口并重新加载父窗口。

编辑:好的 iframe 很糟糕,但是您将如何完成上述操作,我注意到 posterous.com 这样做了 - 我希望实现与 FB connect 相同的流程。

【问题讨论】:

【参考方案1】:

今天为雅虎做同样的事情......

    打开一个弹出窗口 将用户发送到 Twitter 进行身份验证 Twitter 将用户发送回 mysite.com/authcompleted.php,查询字符串中包含身份验证参数。仍然在此处的弹出窗口中。

    弹出窗口 (mysite.com/authcompleted.html) 读取查询字符串并通过 javascript 将数据发送到打开器窗口

    window.opener.setTwitterAuthData(yourData)

    在主窗口中的 setTwitterAuthData 中,设置适当的表单字段并将数据提交到您的服务器。

【讨论】:

当回调是 mysite.com/authcompleted.php 时,你怎么还能在弹出窗口中,第 3 点? @mark 你首先将弹出窗口指向 yahoo,然后 yahoo 重定向,仍在弹出窗口内,到 authcompleted.php 如何检测重定向何时发生并有响应? 是的,我使用相同的流程,但是移动设备呢?它的流程正确吗? 如果您输入错误的密码并发生重定向,现在可以正常工作。 window.opener 未定义【参考方案2】:

你不应该这样做。将其加载到 IFrame 中会对用户隐藏 URL,使他们难以确认自己是在 twitter.com 而非第三方(即网络钓鱼)网站上输入密码。

【讨论】:

我原则上同意,但是授权页面不是只有允许||拒绝此应用程序按钮 - 它不会要求您输入密码。所以我不明白为什么从安全角度来看它应该是一个问题,同时帮助用户体验流程。 如果您没有登录,它会要求您输入密码。 在未登录的页面上有 iframe 破坏 JS,它要求您输入密码(第 37 行) Twitter 的 OAuth 页面现在使用 X-Frame-Options 标头来防止将其加载到 iframe 中:)【参考方案3】:

这可能会有所帮助!

http://zuzara.com/blog/2010/05/15/jquery-plugin-for-twitter-oauth-via-popup-window-facebook-style/

【讨论】:

如果你在 Windows 上开发,你可以在downloads.php.net/pierre找到pecl oauth dll

以上是关于通过弹出窗口进行 Twitter OAuth的主要内容,如果未能解决你的问题,请参考以下文章

Java Selenium - 处理页面弹出窗

百度统计 可以统计页面上的JS的弹出窗的打开次数吗? 怎么实现?

AngularJS页面uib-dropdown控件在模态窗口(弹出窗)中无法使用问题

wpf 右下角弹出窗

如何通过单击外部来关闭 Twitter Bootstrap 弹出窗口?

flutter 实现弹出窗 点击下拉栏 微信右上角弹出窗