node.js의 twitter 로그인에 passport.js를 사용하고 있습니다. 하지만 작동하지 않습니다. 그것은 언젠가 진행중인 채로 있고, 그 다음에 실수 나 성공없이 돌아옵니다.node.js의 passport.js를 사용하여 트위터로 로그인하지 못했습니다.
내 코드 :
module.exports.loginWithTwitter = function (req, res) {
var passport = require('passport');
var Strategy = require('strategy');
var TwitterStrategy = require('passport-twitter').Strategy;
// used to serialize the user for the session
passport.serializeUser(function (user, done) {
done(null, user.id);
});
// used to deserialize the user
passport.deserializeUser(function (id, done) {
User.findById(id, function (err, user) {
done(err, user);
});
});
passport.use(new TwitterStrategy({
consumerKey: "HMtGdCax3EMhUAikCi2uySwoQ",
consumerSecret: "QZlWEdjVbPkWPr7cfS6ohbZgNAkpiboRbP0HGaiv1AvTJRtATw",
callbackURL: "http://192.168.0.102:4000/api/userData/get"
}, function (token, tokenSecret, profile, cb) {
console.log('call');
process.nextTick(function() {
console.log(profile);
});
}));
}
내가 받고 있지 않다 "CONSOLE.LOG에게 ('전화');" 요구.
내 App.js 코드
var express = require('express'),
app = express(),
bodyParser = require('body-parser'),
mongoose = require('mongoose'),
http = require('http'),
cors = require('cors');
app.use(cors());
app.use(function(req, res, next) {
var allowedorigins = ['http://localhost:4000'];
var origin = req.headers.origin;
//if (allowedorigins.indexof(origin) > -1) {
// res.setheader('access-control-allow-origin', origin);
//}
res.header("access-control-allow-credentials", "true");
res.header("access-control-allow-headers", "x-requested-with");
res.header("access-control-allow-headers", "origin, x-requested-with, content-type, accept,application/x-www-form-urlencoded");
next();
});
app.get('/', function(req, res) {
res.setHeader('Content-Type', 'application/json,application/x-www-form-urlencoded');
res.send(JSON.stringify({
Server: "A"
}));
});
var passport = require('passport');
app.get('/auth/twitter', passport.authenticate('twitter'));
app.get('/auth/twitter/callback', passport.authenticate('twitter', {
failureRedirect: '/login'
}), function(req, res) {
console.log('callback')
// Successful authentication, redirect home.
res.redirect('/');
});
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost/Eviral'); // mongo DB Connection
var server = app.listen(4000);
var router = express.Router();
app.use(bodyParser.urlencoded({
limit: '100mb',
extended: true
})); // configure app to use bodyParser() this will let us get the data from a POST
app.use(bodyParser.json({
limit: '100mb'
}));
app.use(function(req, res, next) {
var _send = res.send;
var sent = false;
res.send = function(data) {
if (sent) return;
_send.bind(res)(data);
sent = true;
};
next();
});
app.use(express.static(__dirname));
app.use(require('./routes/clientMSTRoute'));
NodeJS에 대한 트위터 oauth를위한 다른 플러그인이있는 경우 환영합니다. –
나는 전략을 올바르게 정의했다고 생각하지만 어떻게 그것을 node.js 앱에 첨부 할 것인가? 이 예제를 실행하십시오. https://github.com/passport/express-4.x-twitter-example/blob/master/server.js –
@MukeshSharma 여전히 동일한 문제를 가져옵니다. 나는 localhost에서 테스트하고 있는데, localhost에 대해이 문제가 무엇입니까 ?? –