我一直在使用下面的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));
}
}
我现在想搜索推特用户名,所以遵循了这里给出的信息:https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/get-users-search
我修改了我的代码,更改了API url,更改了有效负载,并将方法从'post‘更改为'get’。
下面是我现在拥有的代码:
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,“消息”:“无法对您进行身份验证。”}}(使用muteHttpExceptions选项检查完整响应)(第450行,文件“服务”,项目"Twitter lib")
现在我已经以类似的方式修改了这段代码几次(例如,让用户静音),它工作得很好。
你知道为什么它会失败吗?
发布于 2019-06-27 20:57:40
您要获取的URL有问题,根据GET users/search
的Twitter documentation,需要在请求中将q
参数作为https://api.twitter.com/1.1/users/search.json?q=searchTerm
发送。
您发布的获取请求没有以正确的格式发送请求。您可以通过手动设置fetch请求中的q
参数来解决此问题:
var url = 'https://api.twitter.com/1.1/users/search.json'
var username = 'username'
var q = '?q=' + username
var response = service.fetch(url + q, {
method: 'get',
});
var result = JSON.parse(response.getContentText());
Logger.log(JSON.stringify(result, null, 2));
https://stackoverflow.com/questions/56780055
复制相似问题