通过弹出窗口进行 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的主要内容,如果未能解决你的问题,请参考以下文章
百度统计 可以统计页面上的JS的弹出窗的打开次数吗? 怎么实现?
AngularJS页面uib-dropdown控件在模态窗口(弹出窗)中无法使用问题