跳转到主要内容

开始使用 Quote Tweets 查询 endpoint

本快速上手指南将指导你使用带有指定 fields 集合的 Postman,向 Quote Tweets 查询 endpoint 发起你的首个请求。 如果你想查看不同语言的示例代码,请访问我们的 X API v2 示例代码 GitHub 仓库。 

先决条件

要完成本指南,您需要一组用于对请求进行身份验证的keys and tokens。您可以按照以下步骤生成这些密钥和令牌:
  • 注册开发者账户并获得批准。
  • 在开发者门户中创建一个Project,并关联一个开发者 App
  • 前往您的 App 的“Keys and tokens”页面以生成所需的凭据。请务必将所有凭据保存在安全位置。
构建 Quote Tweets 查询请求的步骤 步骤一:选择工具或库 您可以使用多种工具、代码示例和库来向此 endpoint 发起请求,但我们将在此使用 Postman 来简化流程。 要将 X API v2 的 Postman 集合加载到您的环境中,请点击以下按钮: 在将 X API v2 集合加载到 Postman 后,导航到 timeline 文件夹,找到“Quote Tweets by ID”请求。 步骤二:为请求进行身份验证 要正确地向 X API 发起请求,您需要验证访问权限。对于此 endpoint,您必须使用 OAuth 2.0 App-OnlyOAuth 2.0 Authorization Code with PKCEOAuth 1.0a 用户上下文 的身份验证方法对请求进行认证。 为简单起见,我们将在此请求中使用 OAuth 2.0 App-Only;但如果您希望请求私有度量或私有 Post,则需要使用其他身份验证方法。 您必须将 keys and tokens,尤其是 App Access Token(也称为 App-only Bearer Token)添加到 Postman。您可以在 Postman 右上角选择名为“X API v2”的环境,并将您的 keys and tokens 添加到“initial value”和“current value”字段(点击环境下拉菜单旁的“眼睛”图标)来完成此操作。 如果设置正确,请求的 authorization 选项卡将自动引用该变量。 步骤三:确定并指定要检索其 Quote Tweets 的 Post 您必须在请求中通过传递 Post ID 指定要检索其 Quote Tweets 的 Post。 本示例中使用的 Post ID 为 1409931481552543749。 在 Postman 中,转到“Params”选项卡,将该 Post ID 输入到 id 参数的“Value”列中。
KeyValue
id1409931481552543749
步骤四:确定并指定要检索的字段 如果您在步骤三之后点击“Send”按钮,响应中将返回默认的Post 对象 fields:id、text 和 edit_history_tweet_ids。 如果您希望获取更多字段,需在请求中通过field 和/或 expansion 参数进行指定。 在本练习中,我们将从不同对象请求三组附加字段:
  1. 主用户对象中的附加 tweet.created_at 字段。
  2. 返回的 Post 的作者用户对象的默认字段:id、name 和 username
  3. 关联用户对象中的附加 user.created_at 字段。  
在 Postman 中,导航到“Params”选项卡,并将以下 key:value 对添加到“Query Params”表中:
返回的 fields
tweet.fieldscreated_attweets.created_at
expansionsauthor_idincludes.users.id, includes.users.name, includes.users.username
user.fieldscreated_atincludes.users.created_at
现在你应当在“Send”按钮旁看到以下 URL: https://api.x.com/2/tweets/:id/quote_tweets?expansions=author_id&tweet.fields=created_at&user.fields=created_at 请注意: 在 Postman 中,URL 字段中的路径参数 :id 不会自动更新为您在 id 参数字段中输入的值,这就是为何上述 URL 保留了 :id 而非 1409931481552543749。 步骤五:发起请求并查看响应 完成所有设置后,点击“Send”按钮,您将收到如下响应:
{
 "data": [
   {
     "created_at": "2022-02-22T04:31:34.000Z",
     "text": "RT @chris_bail: X已经创建了一个完整的课程(包含视频、代码和其他材料)来帮助研究人员学习如何收集数据…",
     "author_id": "29757971",
     "id": "1495979553889697792"
   },
   {
     "created_at": "2022-01-26T17:07:43.000Z",
     "text": "RT @suhemparack: 非常兴奋地分享我们关于X API v2学术研究入门的课程\n\n如果你认识学生w…",
     "author_id": "241588187",
     "id": "1486385372401737728"
   },
   {
     "created_at": "2022-01-11T17:28:04.000Z",
     "text": "RT @suhemparack: 非常兴奋地分享我们关于X API v2学术研究入门的课程\n\n如果你认识学生w…",
     "author_id": "24961055",
     "id": "1480954678447857669"
   },
   {
     "created_at": "2022-01-10T20:34:46.000Z",
     "text": "RT @suhemparack: 非常兴奋地分享我们关于X API v2学术研究入门的课程\n\n如果你认识学生w…",
     "author_id": "1441574419789324291",
     "id": "1480639272721940486"
   },
   {
     "created_at": "2021-12-16T22:55:24.000Z",
     "text": "RT @chris_bail: X已经创建了一个完整的课程(包含视频、代码和其他材料)来帮助研究人员学习如何收集数据…",
     "author_id": "1623598771",
     "id": "1471614967207976961"
   },
   {
     "created_at": "2021-12-13T15:59:55.000Z",
     "text": "RT @suhemparack: 非常兴奋地分享我们关于X API v2学术研究入门的课程\n\n如果你认识学生w…",
     "author_id": "1506401233",
     "id": "1470423243513372679"
   },
   {
     "created_at": "2021-12-10T02:02:45.000Z",
     "text": "RT @suhemparack: 非常兴奋地分享我们关于X API v2学术研究入门的课程\n\n如果你认识学生w…",
     "author_id": "40103034",
     "id": "1469125403373568001"
   },
   {
     "created_at": "2021-12-08T17:27:54.000Z",
     "text": "RT @suhemparack: 非常兴奋地分享我们关于X API v2学术研究入门的课程\n\n如果你认识学生w…",
     "author_id": "1436400156006567936",
     "id": "1468633446935318529"
   },
   {
     "created_at": "2021-09-15T21:40:24.000Z",
     "text": "RT @suhemparack: 非常兴奋地分享我们关于X API v2学术研究入门的课程\n\n如果你认识学生w…",
     "author_id": "81650379",
     "id": "1438256410417143809"
   },
   {
     "created_at": "2021-08-26T16:45:16.000Z",
     "text": "RT @suhemparack: 非常兴奋地分享我们关于X API v2学术研究入门的课程\n\n如果你认识学生w…",
     "author_id": "40462535",
     "id": "1430934381829492746"
   }
 ],
 "includes": {
   "users": [
     {
       "username": "j_a_tucker",
       "id": "29757971",
       "name": "Joshua Tucker",
       "created_at": "2009-04-08T16:45:38.000Z"
     },
     {
       "username": "whimchic",
       "id": "241588187",
       "name": "whimchic",
       "created_at": "2011-01-22T16:51:43.000Z"
     },
     {
       "username": "mattbiehl",
       "id": "24961055",
       "name": "Matthias Biehl",
       "created_at": "2009-03-17T21:41:27.000Z"
     },
     {
       "username": "weixinac",
       "id": "1441574419789324291",
       "name": "J",
       "created_at": "2021-09-25T01:25:19.000Z"
     },
     {
       "username": "RSangeleer",
       "id": "1623598771",
       "name": "Richard Sangeleer",
       "created_at": "2013-07-26T18:25:45.000Z"
     },
     {
       "username": "Gulnerman",
       "id": "1506401233",
       "name": "Giz Gulnerman",
       "created_at": "2013-06-11T20:13:40.000Z"
     },
     {
       "username": "efishman123",
       "id": "40103034",
       "name": "Elishema Fishman",
       "created_at": "2009-05-14T22:25:58.000Z"
     },
     {
       "username": "dtcxwz",
       "id": "1436400156006567936",
       "name": "Hüseyin Ateş",
       "created_at": "2021-09-10T18:44:30.000Z"
     },
     {
       "username": "brendaberkelaar",
       "id": "81650379",
       "name": "Dr. Brenda Berkelaar",
       "created_at": "2009-10-11T18:09:16.000Z"
     },
     {
       "username": "misoca",
       "id": "40462535",
       "name": "Michael Soto",
       "created_at": "2009-05-16T13:26:05.000Z"
     }
   ]
 },
 "meta": {
   "result_count": 10,
   "next_token": "avdjwk0udyx6"
 }
}

第六步:对结果进行分页

在上一个响应的底部,你会看到一个 meta data 对象,其中包含以下 fields:
  • results_count
  • next_token
在第四步中,由于我们未指定 max_results 参数,默认情况下只会返回 10 条 Post。要访问更多结果页,我们将从上一页结果中取出 next_token 字段的值,并在 Postman 的 params 页面中将该字符串填入 pagination_token 参数,其他设置保持不变。
KeyValue
pagination_tokenavdjwk0udyx6
完成这些设置后,你可以再次点击“Send”,即可获得下一页的结果。 我们整理了一份关于分页的指南,以进一步说明这一概念。
I