5

DNS によって同じ IP に送信される 2 つのホスト名があります。

  • theark.info
  • www.theark.info

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

内部サーバーエラー

私のDNSには、CNAME wwwDNSにtheark.info

たぶん、リクエストで Express と Javacsript を使用して DOM を操作する必要がありますか?

4

1 に答える 1

2

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');
}
于 2012-08-23T07:24:51.580 に答える