Twitter(または他のOAuthプロバイダー)を変更することはできません。これらはすべて、1つのドメインに対して1つのコールバックのみを提供します。簡単な解決策は、すべてのリクエストをhttp://domain.comからhttp://www.domain.comに再ルーティングすることです。これにより、すべての訪問者は、認証前にwww.domain.comにアクセスすることになります。これは、DNSで、またはreq.headerリダイレクトサーバー側で実行できるはずです。
app.get('/*', function(req, res, next) {
if (req.headers.host.match(/^www/) !== null ) {
res.redirect('http://' + req.headers.host.replace(/^www\./, '') + req.url);
} else {
next();
}
})
この回答からコピーしました。
passport.jsで認証する場合は、コールバックURLを指定してみてください。
passport.use(new TwitterStrategy({
consumerKey: auth_keys.twitter.consumerKey,
consumerSecret: auth_keys.twitter.consumerSecret,
callbackURL: auth_keys.twitter.callbackURL
},
function(token, tokenSecret, profile, done) {
process.nextTick(function () {
User.twitterAuth({ profile: profile }, function (err, user) {
return done(err, user);
});
});
}
));
また、callbackURLがTwitterで構成されているものとまったく同じであることを確認してください。ローカルホストで開発用のノードを実行している場合は、2つの異なるキーファイルを試して、コールバックアドレスとして127.0.0.1:3000を使用してTwitterで別の認証アプリを作成します。開発用と本番用のキーファイルを切り替えることができます。
if (app.get('env') == 'development') {
auth_keys = require('./lib/keys_dev');
}
if (app.get('env') == 'production') {
auth_keys = require('./lib/keys_live');
}