无需身份验证即可将Twitter Feed作为JSON获取

Sim*_*ker 21 javascript twitter

几年前我写了一个小JavaScript,它抓住了一个用户(我的)最近的推文,然后将其解析出来,包括链接,日期等.

它使用这个json调用来检索推文,它不再有效.

http://twitter.com/statuses/user_timeline/radfan.json
Run Code Online (Sandbox Code Playgroud)

它现在返回错误:

{"errors":[{"message":"Sorry, that page does not exist","code":34}]}
Run Code Online (Sandbox Code Playgroud)

我已经看过使用api版本(下面的代码),但这需要身份验证,我宁愿避免这样做,因为它只是在我的网站上显示我的最新推文,无论如何在我的个人资料页面上显示:

http://api.twitter.com/1/statuses/radfan.json
Run Code Online (Sandbox Code Playgroud)

我没有跟上Twitter的API变化,因为我不再真正使用它,是否有解决这个问题的方法还是不再可能?

小智 14

以前,Search API是唯一不需要某种形式的OAuth的 Twitter API .现在它确实需要身份验证.

Twitter的Search API是从第三方收购中获得的 - 他们很少支持它,并且看起来甚至不存在甚至存在.最重要的是,有效负载存在许多限制,包括但不限于您获得的JSONXML文件中的一组密钥:值对严重减少.

当我听到这个时,我感到震惊.我花了很长时间搞清楚如何使用最少量的代码来执行简单的GET请求(比如显示时间轴).

我决定采用OAuth路线来确保相关的有效载荷.您需要使用服务器端语言来执行此操作.JavaScript对最终用户是可见的,因此在.js文件中包含必要的密钥秘密是个坏主意.

我不想用大库,所以对我来说,答案是PHP和帮助@Rivers'答案在这里.@ lackovic10下面的答案描述了如何在您的身份验证中包含查询.

我希望这可以帮助别人节省时间思考如何去使用Twitter的API与新的OAuth要求.

  • 根据[本页](https://dev.twitter.com/docs/api/1.1/get/search/tweets),即使搜索方法现在也需要身份验证. (3认同)

Raf*_*shi 9

您无需登录即可通过高级搜索访问和抓取Twitter:

GET请求

执行基本搜索请求时,您将获得:

https://twitter.com/search?q=Babylon%205&src=typd
Run Code Online (Sandbox Code Playgroud)
  • q(我们的查询编码)
  • src(假设是查询的来源,即键入)

默认情况下,Twitter返回前25个结果,但如果你点击, all你可以获得实时推文:

https://twitter.com/search?f=realtime&q=Babylon%205&src=typd
Run Code Online (Sandbox Code Playgroud)

JSON内容

更多推文通过AJAX加载到页面上:

https://twitter.com/i/search/timeline?f=realtime&q=Babylon%205&src=typd&include_available_features=1&include_entities=1&last_note_ts=85&max_position=TWEET-553069642609344512-553159310448918528-BD1UO2FFu9QAAAAAAAAETAAAAAcAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Run Code Online (Sandbox Code Playgroud)

使用max_position请求下一鸣叫

以下json数组返回刮取内容所需的全部内容:

https://twitter.com/i/search/timeline?f=realtime&q=Babylon%205&src=typd
Run Code Online (Sandbox Code Playgroud)
  • has_more_items(bool)
  • items_html(html)
  • max_position(键)
  • refresh_cursor(key)

DOM元素

这里有一个DOM elements你可以用来提取的列表

作者推特处理

div.original-tweet[data-tweet-id]   
Run Code Online (Sandbox Code Playgroud)

作者的姓名

div.original-tweet[data-name]
Run Code Online (Sandbox Code Playgroud)

作者的用户ID

div.original-tweet[data-user-id]    
Run Code Online (Sandbox Code Playgroud)

帖子的时间戳

span._timestamp[data-time]  
Run Code Online (Sandbox Code Playgroud)

帖子的时间戳以毫秒为单位

span._timestamp[data-time-ms]
Run Code Online (Sandbox Code Playgroud)

推文的文字

p.tweet-text
Run Code Online (Sandbox Code Playgroud)

转推数量

span.ProfileTweet-action–retweet > span.ProfileTweet-actionCount[data-tweet-stat-count] 
Run Code Online (Sandbox Code Playgroud)

Favo的数量

span.ProfileTweet-action–favorite > span.ProfileTweet-actionCount[data-tweet-stat-count]    
Run Code Online (Sandbox Code Playgroud)

资源


小智 5

如果您仍然在寻找JSON中未经身份验证的推文,这应该可行:https: //github.com/cosmocatalano/tweet-2-json


Mar*_*coK 0

正如您在文档中看到的,使用 REST API,您将需要OAuth 令牌才能执行此操作。幸运的是,我们可以使用搜索(不使用 OAuth)并使用from:[USERNAME]运算符

示例: http
://search.twitter.com/search.json ?q=from:marcofolio 将为您提供一个包含该用户推文的 JSON 对象,其中

object.results[0]
Run Code Online (Sandbox Code Playgroud)

会给你最后一条推文。

  • 所有 API 方法现在都需要身份验证。 (8认同)