3

NodeJS と AngularJS で Web アプリケーションを開発しています。これは、Facebook への PageTab アプリケーションです。

ログインには、ライブラリPassport-facebookを使用しています。

私のミドルウェアは次のとおりです。

passport.authenticate('facebook', {
        display: 'popup',
        scope: ['read_stream', 'publish_actions', 'email', 'user_photos']
    })

Facebook のタブの外にいる場合、アプリケーションは機能しますが、Facebook のタブに入ろうとすると、エラーが発生します。

[Error] Refused to display'Http....'in a frame because it set 'X-Frame-Options' to 'DENY'. (login, line 0)
[Error] SecurityError: DOM Exception 18: An attempt was made to break through the security policy of the user agent.

facebook permission dialogiFrameから起動できないため

パスポート戦略でセッション管理を維持しながら、修正するにはどうすればよいですか?

4

1 に答える 1

1

最後に私がしたこと:

  • ユーザーがログインしていない場合、 res.redirect("/auth/facebook"); の代わりに res.render("authorize"); を実行しました。
  • 私が持っているauthorize.htmlページでwindow.top.location = window.location + "auth/facebook";
  • Facebook アプリの絶対 URL に設定Passport.authenticate("facebook", { successRedirect: "/", failureRedirect: "/login" } )するPassport.authenticate("facebook", { successRedirect: appHomePage, failureRedirect: appHomePage } )代わりに(例:appHomePagehttps://apps.facebook.com/8480657996/

アプリでアプリのホームページをハードコーディングするのを避けるために、環境変数を使用すると便利です。

于 2015-04-30T11:05:27.310 に答える