使用Google脚本搜索Twitter用户名时出现强化错误

时间:2019-06-26 19:49:59

标签: javascript google-apps-script twitter twitter-oauth

我一直在使用以下Google脚本来跟踪Twitter用户,效果很好。

var twitterKeys= {
 TWITTER_CONSUMER_KEY: "xxx",
 TWITTER_CONSUMER_SECRET: "xxxx",
 TWITTER_ACCESS_TOKEN: "xxxx",
 TWITTER_ACCESS_SECRET: "xxxx"    
};

var props = PropertiesService.getScriptProperties();

props.setProperties(twitterKeys);

var twit = new Twitter.OAuth(props);

var service = new Twitter.OAuth(props);

if ( service.hasAccess() ) {


var url = 'https://api.twitter.com/1.1/friendships/create.json';
var payload = {
  screen_name: 'username',
};

var response = service.fetch(url, {
  method: 'post',
  payload: payload
});

var result = JSON.parse(response.getContentText());
Logger.log(JSON.stringify(result, null, 2)); 

} 

}

我现在想搜索Twitter用户名,因此遵循此处给出的信息: https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/get-users-search

我通过更改API网址,更改有效负载并将方法从“发布”更改为“获取”来修改代码。

这是我现在拥有的代码:

var twitterKeys= {
 TWITTER_CONSUMER_KEY: "xxx",
 TWITTER_CONSUMER_SECRET: "xxxx",
 TWITTER_ACCESS_TOKEN: "xxxx",
 TWITTER_ACCESS_SECRET: "xxxx"    
};

var props = PropertiesService.getScriptProperties();

props.setProperties(twitterKeys);

var twit = new Twitter.OAuth(props);

var service = new Twitter.OAuth(props);

if ( service.hasAccess() ) {
var url = 'https://api.twitter.com/1.1/users/search.json';
var payload = {
  q: 'test',
};
var response = service.fetch(url, {
  method: 'get',
  payload: payload
});
var result = JSON.parse(response.getContentText());
Logger.log(JSON.stringify(result, null, 2)); 

} 

}

它不起作用,出现以下错误:

https://api.twitter.com/1.1/users/search.json的请求失败,返回了代码401。服务器被截断了:{“错误”:[{“代码”:32,“消息”:“无法对您进行身份验证。”}]}(使用MutetHttpExceptions选项检查完整的响应)(第450行,文件“ Service”,项目“ Twitter lib”)

我现在已经对这种代码进行了类似的修改(例如使用户静音),并且效果很好。

任何想法为什么会失败?

1 个答案:

答案 0 :(得分:0)

您要提取的网址存在问题,根据GET users/search的{​​{3}},q参数需要以{{1 }}。

您发布的获取请求未以正确的格式发送请求。您可以通过在获取请求中手动设置https://api.twitter.com/1.1/users/search.json?q=searchTerm参数来解决此问题:

q