【问题标题】:Twitter oauth authorization in a pop-up instead of in main browser window在弹出窗口中而不是在主浏览器窗口中进行 Twitter oauth 授权
【发布时间】:2010-05-02 20:35:11
【问题描述】:

我什至觉得这个问题非常愚蠢,因为答案可能已经在我的眼皮底下,但它就是这样:

TweetMeme 有一个 Re-tweet twitter 小部件,发布者可以将它放在他们的博客上。当用户点击小部件时,它会弹出一个窗口,允许用户通过 twitter 验证自己的身份,然后重新发送推文。

这似乎使用了一些特殊的 Twitter oauth 弹出窗口形式 - 除非在表面下发生了一些更有趣的事情来验证用户。

弹出窗口如下所示:

http://twitpic.com/1kepcr

我宁愿通过弹出窗口处理身份验证,也不愿将用户发送到一个全新的页面(对于我正在开发的应用程序),他们似乎有最优雅的解决方案。想知道他们是如何做到的?

【问题讨论】:

    标签: twitter popup oauth


    【解决方案1】:

    我认为这个过程是这样的(我假设他们在服务器端使用了php):

    首先它会打开一个类似 jQuery 的弹出窗口,但它与 twitter 登录功能并不严格相关。 当您确认该弹出窗口时,真正的登录过程开始,因此它会打开新的弹出窗口,其中包含一些 php,# 举行会话。 这些脚本要求使用站点的应用程序参数在 Twitter 上发送请求令牌,并将它们保存到 $_SESSION 数组中。 如果没问题,twitter 会将您发送到 twitter 验证页面 (https://twitter.com/oauth/authenticate),在您插入登录参数后,twitter 会将您发送到该站点的回调页面。这里还有另一个请求访问令牌的 php 页面,并将它们保存到 $_SESSION 数组中。如果现在一切正常,该站点具有查询您的个人资料所需的参数,因此弹出窗口中的最后一个脚本刷新打开器窗口(主站点)并关闭自己。 现在主窗口在 $_SESSION 数组中包含了所有有趣的参数。

    检查this 对所有服务器端工作有用的库。

    【讨论】:

      【解决方案2】:

      他们所做的只是在新窗口中打开一个页面http://api.tweetmeme.com/share?url=someURL&source=tweetmeme(使用目标_blank),然后从那里开始这个过程。

      编辑:我看错了转发按钮。对于您的具体示例,单击转推按钮首先会在新窗口中打开 Tweetmeme 页面http://tweetmeme.com/ajax/partial?...。单击“是”然后通过将您(仍在该窗口中)发送到 https://twitter.com/oauth/authenticate(带有适当的参数)来启动 OAuth 过程。

      【讨论】:

      • 是的,但最有趣的是,当用户登录时,他应该从那个 twitter 页面重定向到 tweetmeme 回调页面。我无法了解发送到回调页面的参数如何传递到主页。
      猜你喜欢
      • 2019-03-18
      • 2010-12-25
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多