【问题标题】:Need help converting to Twitter API v1.1 - JavaScript需要帮助转换到 Twitter API v1.1 - JavaScript
【发布时间】:2013-06-16 23:14:03
【问题描述】:

最近 Twitter 将其 API 更新到 v1.1,我的程序停止工作,但无论我阅读了多少文档,我似乎都无法真正理解使我的代码工作需要什么。

我以前的工作代码如下:

function getTweets() {

var url = 'http://search.twitter.com/search.json?q=%23yolo&rpp=10&result_type=recent&callback=?';

    $.getJSON(url, function (json) {

        display = [];
        displayDateTime = [];
        if (json.results.length != null) {
            for (var i = 0; i < json.results.length; i++) {
                var time = new Date(json.results[i].created_at);

                display.push("@" + json.results[i].from_user + ": " + json.results[i].text);
                displayDateTime.push("[" + time.toString().substring(0, 19) + "]");

            } //end of for loop

            display.reverse();
            displayDateTime.reverse();

            loadOtherStuffs();
        } //end of if
        else {
            setTimeout(getTweets, 24000);
        }
    });     //end of getJSON
}//end of getTweets()

我尝试将 url 更改为 https://api.twitter.com/1.1/search/tweets.jsonjson.results 更改为 json.statuses 但它仍然无法正常工作。似乎需要oAuth 才能再次进行这项工作,但我不太确定。

让这项工作再次发挥作用的具体步骤是什么?

【问题讨论】:

  • 你调试了吗?它停在哪条线上?
  • 我无法从 $.getJSON 开始执行任何操作。它只是突出显示其中的所有内容,然后转到 getJSON 的末尾。以前已经是这样了。我正在使用 Visual Studio 2010。
  • 我添加了一些标签,让有更多js知识的人可以帮助你。同时:您确定您的网址正确吗? API 更新是否更改了获取参数?您是否检查过 API 更改日志,了解更改了什么?
  • 我将#yolo 编辑为 %23yolo,这是正确的网址。是的,在最近的推特更新到 v1.1 之前,该 URL 工作正常。以前的工作版本:link 当前 v1.1:link 我可以从这两个版本中做出的区别是 url 更改为'https://dev.twitter.com/docs/api/1.1/get/search/tweets.json?q=%23yolo&amp;count=10&amp;result_type=recent&amp;callback=?',我尝试将 json.results 更改为 json.statuses 但仍然失败。跨度>

标签: javascript jquery api twitter


【解决方案1】:

不工作的原因

In the wonderful world of bad ideas, Twitter is sunsetting this answer, as of May 2013, and will require, at minimum, that you either use one of their widgets, and shoehorn it in, or that you set up an application and do application-level authentication, even for public-timeline GET requests. [From this post]

这完全正确。您要么使用他们的 wigets 将某些东西“破解”在一起(非常不鼓励,如果他们更改了小部件中的一行代码,您的代码将完全停止工作),或者您按照他们的建议进行操作并升级到经过身份验证的请求使用 OAuth 和 1.1 API。

您必须阅读的链接

因此,您不能只是将 URL 中的 /1/ 更改为 /1.1/ 并期望它起作用。

This post 解释了 1.0 API 是如何被弃用的,提供来自 twitter 站点的证据,并解释了您需要如何执行经过身份验证的请求。

This post 提供了一些关于 1.1 API 以及它如何返回 JSON 格式数据的信息。

This post 解释了如果您从现在开始尝试向 1.0 API 发出任何请求,您将如何获得410 GONE 状态,以及这意味着什么。

This post 解释了您遇到的错误的含义

...最后,This post 逐步解释了,如果您选择使用 作为服务器端语言,您会发出经过身份验证的请求并需要一个简单的库(单个文件包含)来让它工作。

即将结束

不要使用 JavaScript 一起破解某些东西,一旦 Twitter 更新了他们的小部件,就是这样,你被搞砸了。使用服务器端语言并按照他们的documentation 正确执行。

【讨论】:

  • 谢谢先生,我去看看。自从我从这个网站获得代码后,我一开始就不知道我在进行黑客攻击并且没有使用正确的方式来获取推文。
  • 我不认为 Jimbo 将您的旧代码称为 hacking,而是您不要尝试使用“hacks”让 API 1.1 在纯 Javascript 中工作。
  • 是的,如果不清楚,抱歉。对仅 JavaScript 解决方案的任何尝试都是“hacky”并且容易出错(而且它们也更难处理)。
  • 非常感谢。我一直在到处寻找这样的摘要
猜你喜欢
  • 1970-01-01
  • 2011-09-28
  • 2013-04-15
  • 2020-07-19
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 2017-10-05
相关资源
最近更新 更多