我一直在使用以下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”)
我现在已经对这种代码进行了类似的修改(例如使用户静音),并且效果很好。
任何想法为什么会失败?
答案 0 :(得分:0)
您要提取的网址存在问题,根据GET users/search
的{{3}},q
参数需要以{{1 }}。
您发布的获取请求未以正确的格式发送请求。您可以通过在获取请求中手动设置https://api.twitter.com/1.1/users/search.json?q=searchTerm
参数来解决此问题:
q