【问题标题】:Twitter OAuth callback issues for web widgetWeb 小部件的 Twitter OAuth 回调问题
【发布时间】:2011-04-10 17:53:45
【问题描述】:

我们的网站允许用户创建可以嵌入到其他第三方网站的小部件。当最终用户在某个站点上与我们的小部件交互时,我们希望代表他/她发布推特更新,然后在小部件本身上向用户显示一条消息(前提是推特更新成功)。我们一直在使用带有基本身份验证的 twitter api 来执行此操作(我们在小部件本身中询问用户他们的用户名和密码)。现在 twitter 已经完全迁移到 OAuth,我们创建了一个 twitter 应用程序来使用 OAuth API。

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

另一种方法是将应用注册为网络应用。一旦用户进行身份验证并提供权限(在作为链接单击打开的新窗口中),我们要求 twitter 使用访问令牌和其他信息(需要为用户发送推文)重定向到我们自己的自定义 url。所以,推特应该可以正常工作。但是,我如何通知小部件(在原始窗口的 iframe 中运行)推文是否成功?

我可以想到一个基于轮询的解决方案,但必须有更好的方法,对吧?

另外,我不能使用 window.open(而不是带有 href = 和 target = _blank 的链接),因为浏览器将它们视为弹出窗口并阻止它们。

【问题讨论】:

    标签: javascript iframe twitter oauth widget


    【解决方案1】:

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

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

    2. 第二个选项是做同样的事情,除了检查数据库是否已存储(不使用会话)。

    不过,我建议您选择第一种。

    【讨论】:

    • 这是我正在考虑的基于轮询的解决方案。有没有更好的方法来做到这一点?
    • 不是我能想到的 - 几个月前我也在考虑同样的事情,但真的想不出替代解决方案(哪个更好)。
    猜你喜欢
    • 2011-03-11
    • 1970-01-01
    • 2011-07-16
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多