2012-08-16 9 views
5

私は私のDNSで同じIPに送信されます2つのホスト名があります。Twitterの使い方同じTwitterアプリケーションを使用して、1つのドメインの複数のホスト名を使って認証しますか?

www.theark.info私は明示的に私のコールバックとドメイン名を設定しtheark.infoを私Twitterアプリはtheark.infoを使用しています。私は現在、エラーを取得するよう、私は、www.theark.infoを使用してのOauthに同じTwitterのアプリを使用することができますことを確認するための最良の方法は何です:私のDNSで

Internal Server Error

私はtheark.info

を指す私のDNSで CNAME wwwを持っています

おそらく、リクエストでExpressとJavacriptを使用してDOMを操作する必要がありますか?

+0

いくつかのコードを、最小限のテストケースにすることをおすすめします。 – ebohlman

+0

これはコードの問題ではありません。これは、1つのホスト名(IIRC)へのコールバックのみを許可するtwitters認証メカニズムです。コードを見る必要はありません。 – EhevuTov

+0

authメカニズムに問題があっても、コンソール出力のような内部サーバーエラーの詳細がより良い回答を提供する可能性があります。 – Patrick

答えて

2

Twitter(または他のOAuthプロバイダ)は変更できません。これらはすべて、1つのドメインに1つのコールバックしか提供しません。簡単な解決策は、http://domain.comからすべてのリクエストをhttp://www.domain.comにリルートすることです。すべての訪問者は認証前にwww.domain.comにアクセスしてください。あなたのDNSまたはreq.headerリダイレクトサーバー側でこれを行うことができる必要があります:

this answerからコピー
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); 
     }); 
    }); 
    } 
)); 

をやTwitterで構成されたようcallbackURLがまったく同じであることを確認してください。 localhost上で開発用のノードを実行している場合は、2つの異なるキーファイルを試して、127.0.0.1:3000のコールバックアドレスとして別の認証アプリケーションを作成します。

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

あなたはどのように再出発しますか?私の知る限りでは、DNSは単にIPに解決します。それは実際にブラウザが話すドメイン名を変更するものではありません。私は 'theark.info'を指す私のDNSにCNAME 'www'を持っています – EhevuTov

+0

私は問題の要点に答えるために小さなピンチを編集しました。基本的には、サーバー側のHTTPリダイレクトが必要になると私は確信しています。応答していただきありがとうございます。 – EhevuTov

+0

CNAMEは機能するはずですか? – Patrick

関連する問題