即使问这个问题,我也感到非常愚蠢,因为答案可能已经在我的鼻子底下了,但在这里:
TweetMeme有一个Re-tweet twitter小部件,发布者可以将这些小部件放在他们的博客上。当用户点击小部件时,它会弹出一个窗口,允许用户通过twitter进行身份验证,然后重新发推文。
这似乎使用了一些特殊的Twitter oauth弹出窗体外形 - 除非在表面下发生了一些更好的事情来验证用户。
弹出窗口如下所示:
我宁愿通过弹出窗口处理身份验证,而不是将用户发送到一个全新的页面(对于我正在处理的应用程序),他们似乎拥有最优雅的解决方案。关于他们如何做到这一点的想法?
答案 0 :(得分:3)
我认为这个过程是这样的(我假设他们在服务器端使用过php):
首先它打开一个类似jQuery的弹出窗口,但它与twitter登录功能并不严格相关。 真正的登录过程在你确认弹出窗口时开始,所以它打开新的弹出窗口,里面有一些php,#hold a session。 这些脚本要求使用站点的应用程序参数来发送请求令牌,并将它们保存到$ _SESSION数组中。 如果它是正确的,twitter会将您发送到twitter身份验证页面(https://twitter.com/oauth/authenticate),在您插入登录参数后,twitter会将您发送到该站点的回调页面。这里有另一个请求访问令牌的php页面,并将它们保存到$ _SESSION数组中。如果它现在完全正确,那么该网站有查询你的个人资料所需的参数,所以最后一个脚本在弹出窗口刷新开启窗口(主站点)并关闭自己。 现在主窗口里面有$ _SESSION数组中所有有趣的参数。
检查this有用的库以获取所有服务器端工作。
答案 1 :(得分:2)
此链接可能是您的答案,我已经尝试过并且它已经有效了。
http://zuzara.com/blog/2010/05/15/jquery-plugin-for-twitter-oauth-via-popup-window-facebook-style/
答案 2 :(得分:0)
他们所做的只是在新窗口中打开页面http://api.tweetmeme.com/share?url=someURL&source=tweetmeme(使用目标_blank),然后从那里开始进程。