【问题标题】:How can I generate a link to the original tweet object using twitter search api?如何使用 twitter search api 生成指向原始推文对象的链接?
【发布时间】:2017-06-06 18:27:15
【问题描述】:

我正在从 twitter search/tweets api 获取结果。问题是我正在尝试重新创建指向原始推文的链接...通常采用以下形式:

http://twitter.com/{user.screen_name}/status/{id}

问题是,如果某件事是转推,那么 user.screen_name 会断开链接 (404),因为转推指向原始推文的 id,而不是转推推文的 id(如果有意义的话)...所以对于转推,我需要链接为http://twitter.com/{retweeted_user.screen_name}/status/{id}

由于没有实际的“转推”对象,我无法在响应中看到一个标志来告诉我一个对象是否是转推。

我很惊讶 twitter 实际上并不是一个简单的metadata.source_url 或易于访问的东西,而不是我必须重建指向 twitter 原始推文页面的链接。

【问题讨论】:

  • 如果您不介意重定向,请使用https://twitter.com/statuses/{id}
  • 啊,谢谢!我试过/status/ 并放弃了。如果你回答我会接受。

标签: twitter oauth


【解决方案1】:

原来https://twitter.com/statuses/{id} 工作正常(感谢@pii_ke)

问题在于 twitter 的搜索 api 同时返回 .id.id_str,而我没有意识到大量数字在 javascript 中无法很好地解析。

您可以在此处阅读更多信息:https://dev.twitter.com/overview/api/twitter-ids-json-and-snowflake

...但唯一的原因是您应该始终使用 .id_str 并将这些 id 编号保存为字符串。

(90071992547409921).toString() 被解析为'90071992547409920'

这是我除了不知道http://twitter.com/statuses/<id_str>之外的问题

在我的情况下,我在服务器端的 node.js 中使用了一个 koa 应用程序,它正在查询 twitter 的 API,该 API 在某处试图将原始 .id 解析为字符串并丢失了一些位......使用 .id_str到处都解决了这个问题。

【讨论】:

    【解决方案2】:

    如果您不介意重定向,请使用 https://twitter.com/statuses/{id_str}

    【讨论】:

    • 对我不起作用:823817721204719600 我得到一个 404 https://twitter.com/statuses/823817721204719600 这是工作链接:https://twitter.com/image_folder/status/797396021722480640 我认为因为它是转推,所以我从 twitter 获得的 id 无效。
    • id 好像有些区别:` "id": 823823414267777000, "id_str": "823823414267777024",` 不知道这两个id有什么不同。文档说 id_str 只是一个字符串版本,但它缺少 .id 中的 024
    • Ids 应该是字符串,因为 javascript 存在将大数字作为 ids 的问题(参见 twitter:dev.twitter.com/overview/api/twitter-ids-json-and-snowflake
    • 是的,有两件事可能出错了。 1. 导致整数溢出的推文ID。 2. 关于哪个screen_name 是哪个推文id 的作者的一些混淆。我只针对后者。
    猜你喜欢
    • 2020-04-30
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多