2012-08-16 10 views
5

Mam dwóch hostów, które są wysłane do tego samego adresu IP przez mojego DNS:Jak na Twitterze Uwierzytelniaj za pomocą wielu hostów z jednej domeny za pomocą tej samej aplikacji na Twitterze?

  • theark.info
  • www.theark.info

jawnie ustawić mój zwrotnej i nazwę domeny w moim Aplikacja na Twitterze używająca theark.info. Jaki jest najlepszy sposób, aby upewnić się, że mogę korzystać z tego samego Twitter aplikacji dla OAuth użyciu www.theark.info, jak obecnie pojawia się błąd:

Internal Server Error

W moim DNS Mam CNAME www w moim DNS, który wskazuje theark.info

Może muszę manipulować DOM za pomocą Express i Javacsript na żądania?

+0

Pokaż kod, najlepiej minimalny test. – ebohlman

+0

To nie jest problem z kodem. Jest to mechanizm uwierzytelniania twitters, który pozwala tylko na oddzwonienie do jednej nazwy hosta, IIRC. Nie musisz widzieć żadnego kodu. – EhevuTov

+0

Nawet jeśli jest to problem z mechanizmem uwierzytelniania, niektóre bardziej szczegółowe informacje na temat błędu serwera wewnętrznego, takie jak dane wyjściowe konsoli, mogą dostarczyć lepszych odpowiedzi. – Patrick

Odpowiedz

2

Nie można zmienić Twittera (ani żadnego innego dostawcy OAuth), wszystkie oferują tylko jedno wywołanie zwrotne do jednej domeny. Łatwym rozwiązaniem jest przekierowanie wszystkich żądań z http://domain.com na http://www.domain.com, aby wszyscy odwiedzający znaleźli się na stronie www.domain.com przed uwierzytelnieniem. Powinieneś być w stanie to zrobić na serwerze DNS lub z req.header przekierowania po stronie serwera:

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();  
    } 
}) 

Skopiowane z this answer.

Po uwierzytelnieniu z passport.js, spróbuj podać adres URL wywołania zwrotnego:

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); 
     }); 
    }); 
    } 
)); 

i upewnij się callbackURL jest dokładnie taka sama, jak skonfigurować w Twitterze. Jeśli używasz węzła do rozwoju na localhost, wypróbuj dwa różne pliki kluczy i utwórz kolejne aplikacje uwierzytelniające na Twitterze z 127.0.0.1:3000 jako adres zwrotny. Możesz zmienić kluczowe pliki dla dev i produkcji:

if (app.get('env') == 'development') { 
    auth_keys = require('./lib/keys_dev'); 
} 
if (app.get('env') == 'production') { 
    auth_keys = require('./lib/keys_live'); 
} 
+0

Jak można ponownie wyświetlić? Według mojej wiedzy DNS po prostu rozwiązuje adres IP. To tak naprawdę nie zmienia nazwy domeny, z którą rozmawia przeglądarka. Mam serwer CNAME "www" w moim DNS, który wskazuje "theark.info" – EhevuTov

+0

Edytowałem odpowiedź małą szczyptę, aby odpowiedzieć na sedno sprawy. Zasadniczo jestem prawie pewien, że będzie to wymagało przekierowania HTTP po stronie serwera. Dzięki za odpowiedzi. – EhevuTov

+0

Serwer CNAME powinien działać, prawda? – Patrick

Powiązane problemy