在nodejs和passport中使用Twitter登录

时间:2018-08-19 11:33:40

标签: node.js express twitter passport.js twitter-oauth

我正在尝试使用twitter API并使用twitter登录。我在YouTube上看到了一段编写此代码的视频。 我用这个图书馆

  

特快,特快专区,护照,推特护照

const session = require('express-session');
app.use(session({
   secret: '',
   resave: true,
   saveUninitialized: true
}));

const passport = require('passport');
const strategy = require('passport-twitter').Strategy;

passport.use(new strategy({
  consumerKey: '',
  consumerSecret: '',
  callbackURL: 'http://localhost:8085/twitter/return'

},(token, tokenSecret, profile, callback) =>{
  console.log('token '+token);
  console.log('tokenSecret '+tokenSecret);
  return callback(null, profile) ;
}));

passport.serializeUser((user, callback)=>{
  callback(null, user) ;

 });

passport.deserializeUser((obj, callback)=>{
   callback(null, obj) ;
  });

app.use(passport.initialize());
app.use(passport.session());

const get = require('./api/v1/get');
app.use('/get', get);

app.get('/twitter/login', passport.authenticate('twitter'));
app.get('/twitter/return', passport.authenticate('twitter', 
     {failureRedirect: '/get'}), (req, res)=>{
      res.redirect('/get')
})

它可以正常工作,我可以获得Token和Token的秘密。但我无法理解此令牌是针对数据库中的哪个用户的。 Twitter回调此URL

  

/ twitter / return?oauth_token = E_kY_gAAAAAA4LMMAAABZV&oauth_verifier = jz8apFk29iaN7nt8HYfIjFIg9K8

我可以使用oauth_token或oauth_verifier来了解哪个用户登录吗?我该怎么理解?

1 个答案:

答案 0 :(得分:1)

查看护照-推特包裹的完整说明:https://github.com/jaredhanson/passport-twitter。它说明了如何保存在数据库中以及如何通过Twitter帐户对用户进行身份验证。

基本上,您需要做的是在Strategy的回调中添加代码以将用户保存(或查找是否已经存在)到DB中。查看自述文件中的“配置策略”部分。

然后,您就可以像以前一样使用Twitter策略了。