代码之家  ›  专栏  ›  技术社区  ›  letronje

web小部件的Twitter OAuth回调问题

  •  1
  • letronje  · 技术社区  · 14 年前

    我们的网站允许用户创建可以嵌入其他第三方网站的小部件。当最终用户在某个站点上与我们的小部件交互时,我们希望代表他/她发布一个twitter更新,然后在小部件上向用户显示一条消息(前提是twitter更新成功)。我们一直在使用带有basic auth的twitterapi来实现这一点(我们要求用户在小部件中输入用户名和密码)。既然twitter已经以独占方式迁移到OAuth,那么我们已经创建了一个twitter应用程序来使用OAuth API。

    现在,一种方法是将我们的twitter应用程序注册为客户端应用程序(而不是浏览器应用程序)。为此,可能的流程是,我们要求用户转到一个url(单击链接并在新窗口中打开),然后在twitter上进行身份验证,对我们的应用程序授予权限,然后返回到widget并输入twitter提供的pin。这很麻烦。

    另一种方法是将应用程序注册为web应用程序。一旦用户进行了身份验证并提供了perms(在以链接单击方式打开的新窗口中),我们就要求twitter重定向到我们自己的自定义url,其中包含访问令牌和其他信息(需要为用户发送tweet)。所以,发微博应该很管用。但是,如何通知小部件(在原始窗口的iframe中运行)tweet是否成功?

    我可以想出一个基于投票的解决方案,但一定有更好的办法,对吧?

    而且,我不能使用窗口打开(而不是href=and target=\u blank的链接),因为浏览器将它们视为弹出窗口并阻止它们。

    1 回复  |  直到 14 年前
        1
  •  1
  •   xil3    14 年前

    有两个选项(我个人使用其中一个)。

    1. 您可以在会话中(在回调脚本/页面中)存储它刚刚通过令牌身份验证的事实,并且在iframe页面中有一个javascript计时器(通过AJAX)检查另一个脚本是否设置了会话-如果设置了,那么iframe将知道它成功了。

    不过,我建议你做第一个选择。