2017-03-01 88 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