首页 > 解决方案 > 在 Twitter Premium Search API 中使用附加请求参数

问题描述

我正在使用Matlab中的Twitter API ,特别是通过Datafeed Toolboxtwitter中的类。

我基本上遵循了官方文档中的示例代码。我在我的 Twitter 开发者页面中创建了一个 Twitter 应用程序,并获得了它的 API 密钥和访问令牌。有了这些,我可以使用 Matlab 的 Twitter标准搜索API:

c = twitter(consumerkey,consumersecret,accesstoken,accesstokensecret);
% The variables 'consumerkey' etc are defined as character vectors
s = search(c,tweetquery,'count',100); % this works

现在我想使用高级搜索API。这有两个用于访问推文的端点:

  • 30 天端点:提供前 30 天的推文。
  • 完整存档端点:提供对自 2006 年 3 月第一条推文的完整和即时访问。

此外,Premium API 有两层访问权限:

  • 免费沙盒访问,支持初始测试和开发。
  • 提供更多访问权限的付费高级访问权限。

与付费访问相比,上面的链接指定了与沙盒相关的限制。

我正在尝试使用具有沙盒访问权限的完整存档端点。为此,我必须在 Twitter 上创建一个开发人员环境,我将其命名为.dev

searchMatlab类中的方法twitter(适用于标准访问,如上所述)似乎不适用于高级访问。但我注意到search实际调用getdata,后者确实适用于高级访问,如下所示。首先,需要定义 Premium 访问 URL:

c.URL = 'https://api.twitter.com/1.1/tweets/search/fullarchive/dev.json';

然后以下语法起作用:

s = getdata(c,c.URL,'query','Jimi Hendrix'); % this works

我还能够在查询字符串中添加运算符,例如指定地理位置范围或将搜索限制为包含图像的推文:

s = getdata(c,c.URL,'query','place:"Palo Alto"'); % this works
s = getdata(c,c.URL,'query','Robert Smith bounding_box:[-0.2 51.4 0.1 51.6]') % this works

但是——这是我的问题——我无法使用 Twitter API 中定义的其他请求参数fromDate来优化搜索,例如toDatemaxResults

s = getdata(c,c.URL,'query','John Frusciante', 'fromDate', '201708130000') % doesn't work
s = getdata(c,c.URL,'query','Rob Scallon', ...
    'fromDate', '201708130000', 'toDate', '201708150000') % doesn't work
s = getdata(c,c.URL,'query','Michael Lemmo', 'maxResults', '20') % doesn't work

以上所有都返回HTTP/1.1 422 Unprocessable Entity错误。

我的语法不正确吗?也许fromDateetc 参数必须是查询字符串的一部分?或者高级搜索的沙盒层可能不支持这些参数?


就上下文而言,我真的不知道端点开发人员环境令牌等所有这些术语的含义,但我仍然想让这项工作发挥作用

标签: matlabresttwitter

解决方案


按照https://developer.twitter.com/en/docs/tweets/search/api-reference/premium-search#DataParameters上的描述,您所谓的“添加请求参数”是为 type 的请求定义的POST /search/:product。这些是HTTP POST请求,您可以尝试使用postdata( https://in.mathworks.com/help/datafeed/twitter.postdata.html ) 而不是getdata. 它们的用法几乎相同。


推荐阅读