現在、ノードサーバーでパスポートを利用してプロジェクトのtwitter認証を利用しようとしています。あるサーバーファイルにすべてのコードがあると、パスポートは期待通りに機能します。以下はその中のすべてのルートを持つサーバーのファイルからの抜粋です:ノードサーバーファイルからパスファイルへのpassport.jsの統合
passport.use(new TwitterStrategy({
consumerKey: config.twitter.consumer_key,
consumerSecret: config.twitter.consumer_secret,
callbackURL: config.twitter.callback_url.dev
}, (token, tokenSecret, profile, done) => {
console.log(token, tokenSecret, profile, done);
process.nextTick(() => {
return done(null, profile);
});
}));
app.use(session({ secret: 'SOMESECRET' }));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static(path.join(__dirname, '../public')));
app.set('view engine', 'ejs');
// expose to routes
app.all('*', (request, response, next) => {
request.log = log;
next();
});
app.get('/', (req, res) => {
res.render('pages/index.ejs');
});
// twitter auth endpoint
app.get('/auth/twitter', passport.authenticate('twitter'));
// twitter auth callback endpoint
app.get('/auth/twitter/callback', passport.authenticate('twitter', { failureRedirect: '/' }), (req, res) => {
res.redirect('/');
});
しかし、私は発生しない認証ファイルのルートに、サーバーファイルからパスポートを公開しようとします。ここではほとんどの質問を検索して文書に戻ってきましたが、すべてのチュートリアルではすべてのルートを含む1つのサーバーファイルしか表示されません。
Serverファイル:
passport.use(new TwitterStrategy({
consumerKey: config.twitter.consumer_key,
consumerSecret: config.twitter.consumer_secret,
callbackURL: config.twitter.callback_url.dev
}, (token, tokenSecret, profile, done) => {
console.log(token, tokenSecret, profile, done);
process.nextTick(() => {
return done(null, profile);
});
}));
app.use(session({ secret: 'SECRET' })); // session secret
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static(path.join(__dirname, '../public')));
app.set('view engine', 'ejs');
// expose to routes
app.all('*', (request, response, next) => {
request.log = log;
request.passport = passport;
next();
});
// routes
app.use('/', routes);
ルートファイル:
import express from 'express';
const routes = express.Router();
import config from '../config.js';
// main
routes.get('/', (req, res) => {
res.render('pages/index.ejs');
});
// twitter auth endpoint
routes.get('/auth/twitter', (req, res) => {
const passport = req.passport;
passport.authenticate('twitter');
});
// twitter auth callback endpoint
routes.get('/auth/twitter/callback', (req, res) => {
const passport = req.passport;
passport.authenticate('twitter', {
failureRedirect: '/'
});
res.redirect('/');
});
module.exports = routes;
私はここで何をしないのですか?私はルートの機能の中でpassport.authenticate
を使用できないと思っています。私はまだ経路ファイルを使ってバージョンを取得する方法を理解しようとしています。どんな助けもありがとう!
なぜあなたは再びルートファイル上のルートをredifineし、あなたのログについて何するんです – douxsey
あなたは@douxseyに何を求めているのかはっきりしていませんか?ルートファイルが表示されます。なぜなら、私の記事で説明したように、この作業を行う2つの試みがあるからです。また、投稿はログに関するものではなく、私の質問にどのように影響するのか分かりません。 – SMT