跳转到主要内容

介绍

虽然近期搜索 endpoint仅能获取过去 7 天内发布的 Posts,但用户 Post 时间线和用户提及时间线的 endpoint 允许你为授权用户(使用用户 id)检索早于最近 7 天的 Posts 和提及。开发者可以使用这些 endpoint 分析用户时间线或提及中的主题、实体和情感。在本教程中,我们将演示如何使用用户 Tweet 时间线和用户提及时间线的 endpoint 来探索某个用户的 Posts 和提及。  

先决条件

  • 要使用用户 Tweet 时间线和用户提及时间线的 endpoint,您需要拥有一个有效的开发者账户。
  • 您还需要创建一个 Project
  • 您必须已注册开发者账户,并启用新的开发者门户体验
  • 需要在开发者门户中创建并附属于Project的开发者 App,且其密钥和令牌处于可用状态。
  • X developer portal 中,从您的 App 获取 OAuth 2.0 Bearer Token。
  • 如果您尚未获得批准的开发者账户,您可以申请访问权限

已获批准的开发者账户

如果你尚未拥有,可以提交申请

创建 Project 并连接 App

开发者门户中,点击创建新的 Project。
为其命名,选择合适的用例,并填写 Project 描述。接下来,你可以创建新的 App,或连接现有的App(App 是用于存放你的 API Key 等凭据的容器,你需要它来向 X API 发起 HTTP 请求)。
点击“create a new App instead”,并为你的 App 命名以创建新的 App。
点击完成后,你将获得 API keys 和 Bearer Token,之后即可使用它们连接到 X API v2 中的新 endpoint。
点击 API key、API secret key 和 Bearer token 旁边的 (+),将这些值复制到本地计算机的安全位置。你在下一步进行 API 调用时将需要它们。 注意:上方截图中的密钥已隐藏,但在你自己的开发者门户中,你将能看到 API key、API secret key 和 Bearer token 的实际值。  

如何获取用户的 user ID 以用于用户推文时间线和用户提及时间线的 endpoints

用户推文时间线和用户提及时间线的 endpoints 允许你使用 user ID 获取 Posts。要从用户名获取 user ID,你可以使用新的 user lookup endpoint v2。将 USER_NAME 替换为你选择的用户名,并将 XXXX 替换为你在上文获取的 OAuth 2.0 Bearer Token
  curl --request GET 'https://api.x.com/2/users/by/username/USER_NAME --header 'Authorization: Bearer XXXXXX'
您将在响应中看到用户 id,如下所示:
{
   "data": {
       "id": "2244994945",
       "name": "开发者",
       "username": "XDevelopers"
   }
}

连接到用户 Tweet 时间线和用户提及时间线的 endpoint

要获取某个用户的 Tweet 时间线,请在终端运行以下 curl 命令(请将 USER_ID 替换为目标用户的 id,将 XXXX 替换为你在上方获得的 OAuth 2.0 Bearer Token)
curl --request GET 'https://api.x.com/2/users/USER_ID/tweets' --header 'Authorization: Bearer XXXXXX'
您会看到,这些请求的 JSON 响应默认会包含这些 Post 的 id 和文本内容(见下方示例)。
{
   "id": "1334200897081987072",
   "text": "👀 如果您是 X API v2 的新手,请查看这份逐步指南来发送您的第一个请求 https://t.co/4rZqThpSbp"
}
如果你希望在响应中返回更多字段(例如用户信息、额外的 Tweet 字段,如 context annotations 等),则需要在请求中显式指定这些字段。请参阅关于使用 fields 和 expansions 的指南了解具体方法。 你也可以使用任意编程语言来获取这些 Post。请查看我们为用户 Tweet 时间线和用户提及时间线 endpoint 提供的 Python、Node(JavaScript)、Java 和 Ruby 示例代码,位于我们的GitHub 代码库

探索用户的 Posts

在了解如何使用 user Tweet timeline 和 user mention timeline 这两个 endpoint 获取 Posts 之后,您就可以开始探索他们的 Posts。比如,如果您想识别某个用户的提及中常见的命名实体,可以这样做: 在 API 请求中,指定希望在 Tweet 响应中返回 context_annotations 对象:
curl --request GET 'https://api.x.com/2/users/USER_ID/mentions?tweet.fields=context_annotations' --header 'Authorization: Bearer XXXXXX'
在响应中,你可以查看提及中是否包含任何命名实体。示例如下:
{
   "domain": {
       "id": "47",
       "name": "Brand",
       "description": "品牌与企业"
   },
   "entity": {
       "id": "783214",
       "name": "X"
   }
}
如果你想查看你的提及中出现了哪些热门实体,可以通过解析提及里的每条 Tweet 来统计热门实体的出现次数。 如果你想获取时间线上所有包含媒体的 Post 的预览图片 URL,可以按如下方式操作: 在 API 请求中,在 tweet.media 的 fields 中指定 preview_image_url,并在 expansions 中指定 attachments.media_keys
curl --request GET 'https://api.x.com/2/users/2244994945/mentions?max_results=100&media.fields=preview_image_url&expansions=attachments.media_keys' --header 'Authorization: Bearer XXXXXX'
在响应中,您会在 includes 对象中看到 preview_image_url,如下所示:
{
   "includes": {
       "media": [
           {
               "media_key": "16_1334657439640121344",
               "preview_image_url": "https://pbs.twimg.com/tweet_video_thumb/EoWn3rqU8AAtFWL.jpg",
               "type": "animated_gif"
           }
       ]
   }
}
在了解如何浏览用户的 Post 之后,您还可以借助其他 API 和服务对这些 Post 做更多处理。以下是在使用用户 Tweet 时间线和用户提及时间线 endpoint 时可随手参考的一些资源。

资源

I