Я не могу обратиться к обратному вызову verify при использовании нового OAuthStrategy () паспорта js для 3-legged-auth twitter - PullRequest
1 голос
/ 06 мая 2020

Я хотел бы использовать Oauth1.o для получения учетных данных от провайдера, но я застрял на полпути. Я использую паспорт js для реализации.

Вот краткий код:

  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;
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-адресу обратного вызова после авторизации приложения на странице Twitter. Но я не могу console.log токен, tokenSecret и профиль. В документации также было непонятно, как использовать функцию обратного вызова done.

Я нахожусь в учебном путешествии, используя https://github.com/twitterdev/twauth-web/blob/master/twauth-web.py, и предпочел бы избегать использования паспорта-twitter научиться овладевать приведенным ими примером.

1 Ответ

0 голосов
/ 06 мая 2020

Вам также необходимо добавить промежуточное ПО для аутентификации в маршрут обратного вызова. Вы можете ознакомиться с документами здесь :

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