2017-03-01 55 views
1

我試圖從包含人名的電子表格中找到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限制

回答

0

不能搜索使用用戶https的幾次應用的唯一身份驗證(承載令牌)。見https://dev.twitter.com/oauth/application-only。該請求需要用戶上下文(訪問令牌)。您可以從https://apps.twitter.com獲得您自己的訪問令牌。

+1

我明白了,謝謝!我正在努力尋找如何在GAS中做到這一點的例子,儘管可能不得不放棄這個想法。 – touto