0

特定のパブリック URL から利用できる ASP.NET MVC 3 Web サイトがあり、Facebook アプリとしても利用できるようにしています。

この環境に基づいてコンテンツを表示したいので、Web サイトのロジック内で、現在の要求が Facebook アプリからのものか、パブリック Web サイトからのものかを判断する必要がある場所があります。

だから、例えば。ユーザーが自分のサイトを facebook アプリとして使用している場合は画像を表示したいし、ユーザーが自分のサイトを通常どおり使用している場合は画像を表示したくありません。

私が Facebook アプリから来たかどうかを判断するには、HttpContext.Request の「signed_request」をチェックし、それを HttpSession に保存して、自分用に定義されたそのアクション (url) だけでなく、他のアクションでも使用できるようにします。フェイスブックアプリ。

したがって、子アクションが実行されると、セッションに基づいて、Web サイトが FB アプリとして使用されているかどうかを判断できます。

問題は、セッションがタイムアウトしたときに発生します。これは、ロジックがまだ Facebook 内で実行されているにもかかわらず、私のロジックが Facebook 内ではないと判断するためです。

何かアドバイス?

4

2 に答える 2

0

FBアプリから定期的にサーバーに連絡できますか?ユーザーがしばらく何もしなかった場合は、そこから「ping」できるかもしれません。

于 2012-04-13T11:56:23.127 に答える
0

必要ない場合は、signed_request からの重要な情報を Cookie に保存できます。この情報は、ブラウザーを閉じると期限切れになります。このコンテンツを保存するには、セッションの信頼性が十分ではありません。

あなたのアプローチは間違っているかもしれないと思います。ユーザーが Facebook と別の URL の両方からアプリケーションに入るとどうなりますか? Facebook には Javascript API があり、ユーザーがサイトに接続している場合に Cookie を配置します。ユーザーが接続している場合は、Facebook 関連のコンテンツを表示する必要があり、これがキャンバス アプリであるか別のページであるかは関係ありません。特に同じビューを使用する場合。ビューが同じではなく、URL のみの場合は、キャンバス アプリ用に別の URL が必要です。

最後の解決策ですが、恐ろしいのは、ページが iframe で動作しているかどうかを Javascript で確認することです。動作していて、signed_request が存在しない場合は、top.location をリロードします。

于 2012-04-13T12:09:29.713 に答える