2013-08-12 3 views
0

저는 초보자이며 JS를 사용하여 트위터에 연결하려고합니다. 내가 E에 JS 파일을 데 :/디렉토리하지만 난 다음 코드트위터 Oauth가있는 노드 JS

var express = require('express'); 
var sys = require('sys'); 
var oauth = require('oauth'); 

var app = express.createServer(); 

var _twitterConsumerKey = "NeFpQZNDapDtFJnUXDe0Q"; 
var _twitterConsumerSecret = "mXf7AKYJWIdiToKuSgsTm2me0GBA1aNn39uskmEoOM"; 

function consumer() { 
    return new oauth.OAuth(
    "https://twitter.com/oauth/request_token", "https://twitter.com/oauth/access_token", 
    _twitterConsumerKey, _twitterConsumerSecret, "1.0A", "http://badgestar.com/sessions/callback", "HMAC-SHA1"); 
} 

app.configure('development', function(){ 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
    app.use(express.logger()); 
    app.use(express.cookieDecoder()); 
    app.use(express.session()); 
}); 

app.dynamicHelpers({ 
    session: function(req, res){ 
    return req.session; 
    } 
}); 

app.get('/', function(req, res){ 
    res.send('Hello World'); 
}); 

app.get('/sessions/connect', function(req, res){ 
    consumer().getOAuthRequestToken(function(error, oauthToken, oauthTokenSecret, results){ 
    if (error) { 
     res.send("Error getting OAuth request token : " + sys.inspect(error), 500); 
    } else { 
     req.session.oauthRequestToken = oauthToken; 
     req.session.oauthRequestTokenSecret = oauthTokenSecret; 
     res.redirect("https://twitter.com/oauth/authorize?oauth_token="+req.session.oauthRequestToken);  
    } 
    }); 
}); 

app.get('/sessions/callback', function(req, res){ 
    sys.puts(">>"+req.session.oauthRequestToken); 
    sys.puts(">>"+req.session.oauthRequestTokenSecret); 
    sys.puts(">>"+req.query.oauth_verifier); 
    consumer().getOAuthAccessToken(req.session.oauthRequestToken, req.session.oauthRequestTokenSecret, req.query.oauth_verifier, function(error, oauthAccessToken, oauthAccessTokenSecret, results) { 
    if (error) { 
     res.send("Error getting OAuth access token : " + sys.inspect(error) + "["+oauthAccessToken+"]"+ "["+oauthAccessTokenSecret+"]"+ "["+sys.inspect(results)+"]", 500); 
    } else { 
     req.session.oauthAccessToken = oauthAccessToken; 
     req.session.oauthAccessTokenSecret = oauthAccessTokenSecret; 
     // Right here is where we would write out some nice user stuff 
     consumer.get("http://twitter.com/account/verify_credentials.json", req.session.oauthAccessToken, req.session.oauthAccessTokenSecret, function (error, data, response) { 
     if (error) { 
      res.send("Error getting twitter screen name : " + sys.inspect(error), 500); 
     } else { 
      req.session.twitterScreenName = data["screen_name"];  
      res.send('You are signed in: ' + req.session.twitterScreenName) 
     } 
     }); 
    } 
    }); 
}); 

app.listen(parseInt(process.env.PORT || 80)); 

과 모듈 폴더 또는 무엇을 작성해야하는 경우 나도 몰라하지만 그것은 실행에 날이 오류를 제공하여 말한다 :

module.js:340 
    throw err; 
     ^
Error: Cannot find module 'express' 
    at Function.Module._resolveFilename (module.js 
    at Function.Module._load (module.js:280:25) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (E:\hello.js:1:77) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:47 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 

답변

3

express가 올바르게 설치되어 있지 않습니다. 귀하의 프로젝트에서 시도해보십시오 sudo npm install express node_modules 폴더를 만들고 그것에 express 모듈을 추가해야합니다.

인증 전략을 위해 passport 미들웨어를 사용할 것을 권장합니다.

0

을 필요에 다음 코드를 사용하여 링크를

http://passportjs.org/guide/twitter/

를 사용합니다. 명령은 다음과 같습니다. npm install express. 그러면 node_module 폴더가 생성되고 & express 모듈이 node_module에서 사용 가능할 것입니다.