1

Facebookログインを持つnodeJSアプリケーション(エクスプレス)があります。ここで説明されているパスポート-フェイスブック認証を使用していますパスポート-フェイスブック。私のログインは数週間前はまだ機能していましたが、今は何かが変わっています. Facebook が何かを変更したのか、それとも私が変更したのかはわかりません。ログインコードには触れていないので、Facebook側の何かだと思います。

これが私の認証コードです:

router.get('/', passport.authenticate('facebook'), function(req, res){
});

router.get('/auth/facebook/callback', passport.authenticate('facebook', {
  failureRedirect: '/' }),
  function(req, res) {
  res.redirect('/calendar');
});

基本的に、アプリのルートからユーザーを自動的に認証し、認証後に /calendar にリダイレクトする必要があります。

症状は次のとおりです。 root に移動しようとして、以前に Facebook でログインしていない場合、通常の Facebook ログイン画面が表示されます。しかし、その画面には、次の警告があります。

指定された URL はアプリケーションの設定で許可されていません 指定された URL の 1 つ以上がアプリケーションの設定で許可されていません。ウェブサイトの URL またはキャンバスの URL と一致するか、ドメインがアプリのドメインのいずれかのサブドメインである必要があります。

これに関連するすべての質問を確認しましたが、Facebook アプリの構成でアプリ ドメインとサイト URL を適切に構成していないことが原因のようです。しかし、それらはすべて問題ないはずです: アプリ ドメイン: localhost、サイト URL: http://localhost:3000/

それで、なぜそれについて不平を言っているのかわからないのですか?サブドメインはありません。私が持っているルートは (/, /calendar, /calendar/events) だけです。最後の /calendar/events ルートは ajax ルートです。とにかく、Facebook の資格情報を入力してログインすると、ページは次の URL を持つ空のページにリダイレクトされます: ( https://www.facebook.com/login.php?login_attempt=1 )。開発者ツールを開くと、コンソールに次のエラー メッセージが表示されます。

リソースのロードに失敗しました: サーバーは 500 のステータスで応答しました (内部サーバー エラー)

しかし、今は実際にログインしています。ルートまたは /calendar に移動すると、正しいページに移動し、適切にログインしていることがわかります。どうやらログインは機能しますが、リダイレクトと許可された URL にはいくつかの問題があります。私はただ何が何で、なぜなのか分からないようです。データベースとしてmongodDBを使用しています。

4

2 に答える 2

0

なぜこれが機能したのかわかりませんが、解決策を見つけました。以前は、有効な OAuth リダイレクト URI をhttp://127.0.0.1:3000/auth/facebook/callbackに設定していましたが、問題なく動作していました。ここで、127.0.0.1:3000 の代わりに localhost を使用するように変更しました。理由はわかりませんが、すべてが期待どおりに機能しています。誰かが理由を明確に教えてくれたら、それを正解としてマークします。

于 2015-06-06T10:49:27.227 に答える
0

アプリに登録したサイトが原因である可能性があります。http://localhost:3000/に登録した場合は、コールバック用のドメイン localhost を使用する必要があります。http://127.0.0.1:3000/として登録している場合は、127 で作業する必要があります...

于 2015-07-04T13:31:42.903 に答える