当使用 passportjs 的新 OAuthStrategy() 用于 twitter 的 3 条腿验证时,我无法进入验证回调

I can't reach into the verify callback when using passportjs's new OAuthStrategy() for twitter's 3-legged-auth

我想使用 Oauth1.o 从提供商那里获取凭据,但我中途卡住了。我正在使用 passportjs 来实现。

这里是简短的代码:

  1. oauth.js
    const passport = require('passport');
    const OAuthStrategy = require('passport-oauth').OAuthStrategy;

    passport.use(
        'provider',
        new OAuthStrategy({
            requestTokenURL: "****",
            accessTokenURL: "****",
            userAuthorizationURL: "****",
            consumerKey: "****",
            consumerSecret: "****",
            callbackURL: "****",
        },
        (token, tokenSecret, profile, done) => {
            store[token] = tokenSecret;
            console.log(profile);
            done(null, profile);
        })
    );

    module.exports = passport;
  1. Express 小程序(模块化路由)
const express = require('express');
const router = express.Router();

const passport = require('./oauth');

/**
 * Initialize Passport
 * Restore authentication state, if any, from the session
 */
router.use(passport.initialize());
router.use(passport.session());

router.get('/oauth/sign-in', passport.authenticate('provider'));

router.get('/oauth/callback', (req, res) => {
    const { oauth_token, oauth_verifier, denied } = req.query;

    if (denied !== null && denied !== undefined) {
        req.session.destroy();
        res.json(denied);
    }

    res.json({ oauth_token, oauth_verifier });
});

module.exports = router;

从上面的代码可以看出,我在推特页面授权后成功的回调了URL。但我无法 console.log 令牌、tokenSecret 和配置文件。关于如何使用 done 回调函数,我也不清楚文档。

我正在使用 https://github.com/twitterdev/twauth-web/blob/master/twauth-web.py 进行学习之旅,宁愿避免使用 passport-twitter 来学习掌握他们给出的示例。

您还需要在回调路由中添加身份验证中间件。您可以查看文档 here:

router.get('/oauth/callback', passport.authenticate('provider', {
  failureRedirect: '/login' //optional
}),
  (req, res) => {
    //...your code...
  });