当使用 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 来实现。
这里是简短的代码:
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。但我无法 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...
});
我想使用 Oauth1.o 从提供商那里获取凭据,但我中途卡住了。我正在使用 passportjs 来实现。
这里是简短的代码:
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。但我无法 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...
});