Non è possibile modificare Twitter (o qualsiasi altro provider OAuth), tutti offrono solo una richiamata a un dominio. Una soluzione facile è reinstradare tutte le richieste da http://domain.com a http://www.domain.com, in modo che tutti i visitatori finiscano su www.domain.com prima di autenticarsi. Si dovrebbe essere in grado di fare questo sul vostro DNS o con un lato server req.header reindirizzamento:
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();
}
})
copiato da this answer.
Quando l'autenticazione con passport.js, provate a specificare l'URL di callback:
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);
});
});
}
));
E assicurarsi che il callbackURL è esattamente lo stesso come configurato twitter. Se stai eseguendo il nodo per lo sviluppo su localhost, prova due diversi file chiave e crea un'altra app di autenticazione su Twitter con 127.0.0.1:3000 come indirizzo di richiamata. È possibile cambiare i file chiave per dev e produzione:
if (app.get('env') == 'development') {
auth_keys = require('./lib/keys_dev');
}
if (app.get('env') == 'production') {
auth_keys = require('./lib/keys_live');
}
Mostrare un codice, preferibilmente un caso di test minimo. – ebohlman
Non si tratta di un problema di codice. È il meccanismo di autorizzazione dei twitter, che consente solo una richiamata a un nome host, IIRC. Non dovresti avere bisogno di vedere alcun codice. – EhevuTov
Anche se si tratta di un problema con il meccanismo di autenticazione, alcuni dettagli sull'errore del server interno, come l'output di una console, potrebbero fornire risposte migliori. – Patrick