Twitter e Node.js, autenticação do aplicativo

A autenticação somente do aplicativo permite que o aplicativo emita solicitações para a API do Twitter sem ter que se dar ao trabalho de obter a permissão do usuário. Aqui estão os documentos:

https://dev.twitter.com/docs/auth/application-only-auth

Precisaremos usar o protocolo OAuth2 para fazer isso e, felizmente, há um pacote Node para este trabalho: oauth

Primeiro, vamos querer instalar o pacote oauth:

npm install oauth --save

E então exigir:

var OAuth2 = require('OAuth').OAuth2; 

Agora podemos usar o objeto OAuth2 para buscar um token de acesso em nosso nome:

var oauth2 = new OAuth2(KEY, 'SECRET', 'https://api.twitter.com/', null, 'oauth2/token', null);

oauth2
.getOAuthAccessToken('', {
'grant_type': 'client_credentials'
}, function (e, access_token) {
console
.log(access_token); //string that we can use to authenticate request
});

O token é colocado nos cabeçalhos de nossa solicitação HTTPS:

 var options = {
hostname
: 'api.twitter.com',
path
: '/1.1/statuses/user_timeline.json?screen_name=mostlyharmlessd',
headers
: {
Authorization: 'Bearer ' + access_token
}
};

Finalmente é hora de fazer nossa solicitação usando https :

https.get(options, function(result){
result
.setEncoding('utf8');
result
.on('data', function(data){
console
.log(data); //the response!
});
});

Porém, não é tão simples assim, os dados voltam em partes. Você precisará juntar todos eles antes de analisar a resposta:

https.get(options, function(result){
var buffer = '';
result
.setEncoding('utf8');
result
.on('data', function(data){
buffer
+= data;
});
result
.on('end', function(){
var tweets = JSON.parse(buffer);
console
.log(tweets); // the tweets!
});
});

FEITO!

Você pode ver a essência de todo este snippet de código aqui: https://gist.github.com/Dakuan/5899971