0

キャンバスで実行される Facebook アプリを開発しています。これがシナリオです(非常に一般的だと思います)。これはすべてサーバー側の実装です。

であること:

APP_URL: https://apps.facebook.com/xxxxxx/
CANVAS_URL: https://myexample.com/facebookApp/
  1. ステップ 1 (アプリのインデックス) にはフォームがあります。ありますaction="CANVAS_URL/step2"(アプリの URL ではないことに注意してください)。次のステップで使用するためにsigned_request、隠しフィールドがあります<input type="hidden" name="signed_request" value="<?php echo $_POST['signed_request'] ?>" />

  2. ステップ 2 : フォームの情報を受け取り、それを に格納してからSession、signed_request を解析します。これは正常に動作します。ユーザーが認証されたにデータベースに保存したいので、セッションに保存します。ユーザーがアプリにログオンしていた場合、私は彼をにリダイレクトしAPP_URL/step3ます。そうでない場合は、彼をログイン ダイアログにリダイレクトします&redirect_uri=APP_URL/step3APP_URL/step3どちらの場合も、ステップ 3 は(signed_requestユーザーが認証されているかどうかと別のデータを再度確認する必要があるため) であることに注意してください。すべてのリダイレクトは JavaScript で行われます。<script type="text/javascript">window.top.location = "URL";</script>

  3. ステップ 3 : 以前にセッションに保存されたデータを保存したいと思います。しかし、ユーザーが FB キャンバスをナビゲートしているため、セッション データは利用できません。

いくつかの組み合わせを試しました。フォームが に送信された場合APP_URL/step2( の代わりにCANVAS_URL/step2のセッションを作成するためAPP_URL)、投稿されたデータを取得できません ( ではなく FB に送信されるためCANVAS_URL)。

session_idを使用して でセッションを再作成することを考えましたAPP_URLが、残念ながら、それはあまり安全な方法ではありません。より良い回避策があるに違いないと確信しています。

4

0 に答える 0