我試圖從包含人名的電子表格中找到Twitter句柄。使用Google Apps腳本和Twitter API搜索Twitter句柄 - 不起作用
我不能得到它與這個請求,我相信是我應該使用的,因爲我只有人的名字(例如亞當斯密):api.twitter.com/1.1/users/search.json q =
我得到以下錯誤:
Request failed for api.twitter.com/1.1/users/search.json?q=Name returned code 403. Truncated server response: {"errors":[{"message":"Your credentials do not allow access to this resource","code":220}]} (use muteHttpExceptions option to examine full response) (line 38).'
我試圖尋找這個錯誤,但是這並沒有幫助我這麼遠。
如果我使用,例如,這個要求,它的工作原理:api.twitter.com/1.1/users/show.json?screen_name=
這樣我就可以得到SCREEN_NAME回在電子表格中,但是這顯然是沒有意義的,因爲它需要屏幕名稱才能工作...
整個事情是基於this work,該代碼中的所有請求都適合我。只是這個搜索請求不起作用。出了什麼問題?
var CONSUMER_KEY = 'x';
var CONSUMER_SECRET = 'x';
function getTwitterHandles(name) {
// Encode consumer key and secret
var tokenUrl = "https://api.twitter.com/oauth2/token";
var tokenCredential = Utilities.base64EncodeWebSafe(
CONSUMER_KEY + ":" + CONSUMER_SECRET);
// Obtain a bearer token with HTTP POST request
var tokenOptions = {
headers : {
Authorization: "Basic " + tokenCredential,
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
},
method: "post",
payload: "grant_type=client_credentials"
};
var responseToken = UrlFetchApp.fetch(tokenUrl, tokenOptions);
var parsedToken = JSON.parse(responseToken);
var token = parsedToken.access_token;
// Authenticate Twitter API requests with the bearer token
var apiUrl = 'https://api.twitter.com/1.1/users/search.json?q=screen_name='+name;
var apiOptions = {
headers : {
Authorization: 'Bearer ' + token
},
"method" : "get"
};
var responseApi = UrlFetchApp.fetch(apiUrl, apiOptions);
var result = "";
if (responseApi.getResponseCode() == 200) {
// Parse the JSON encoded Twitter API response
var tweets = JSON.parse(responseApi.getContentText());
return tweets.id
}
Logger.log(result);
}
編輯:刪除,因爲的URL限制
我明白了,謝謝!我正在努力尋找如何在GAS中做到這一點的例子,儘管可能不得不放棄這個想法。 – touto