アプリケーションを一度ロードし、signed_request を受け取り、そこからユーザー トークンを取得すると、iframe 内のすべての遷移は内部リンクを使用して行われます (署名された要求はありません)。
対処しなければならないユースケースがいくつかあります。ユーザー アクセス トークンの有効期限が切れる直前:
- ユーザーが次のリンク (ajax ではない) をクリックし、get 要求を送信した
- ユーザーがフォームに入力し、投稿リクエストを送信しました
- ユーザーは、facebook にアクセスする必要があるサーバーに ajax リクエストを送信しました
Nr 1 は最も明白なケースです。トランザクションがないため、単純にユーザーを /authorize にリダイレクトできます。Nr3 は、サーバーからの特殊なエラーを解析して /authorize にリダイレクトするのと同じ方法で解決できます。
Nr2 は、非トランザクション mongodb を使用しているため、最も不快なケースです。したがって、私が見る唯一の解決策は、何かをする前に、/me? に対してアクセス トークンをチェックする必要があることです。無効な場合は、リクエスト ボディ全体をセッションに保存し、/authorize にリダイレクトしてから、もう一度リクエストを処理します。ただし、それが有効である場合、私の取引が成功するという保証はありませんが、私はこれで問題ありません.
ですから、本当の問題は、これらの状況にどのように対処するかということだと思います. トークンをどのように更新しますか? それらをどのように扱いますか?多分私は明らかな何かを見逃していますか?
どんなアイデアでも大歓迎です。ありがとう!