Я хотел бы использовать Oauth1.o для получения учетных данных от провайдера, но я застрял на полпути. Я использую паспорт js для реализации.
Вот краткий код:
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 научиться овладевать приведенным ими примером.