0

Facebook ページ内にアプリケーションをインストールしています。$_REQUEST で、または Facebook PHP SDK Facebook::getSignedRequest() 関数を使用しているときに、signed_request 変数を受け取りました。ただし、アプリケーション内の別のページに移動すると、アプリケーション内で signed_request が続きません。

$_SESSION 内に配置され、signed_request データがセッション内に保存されていることは理解していますが、そのデータを取得するためにどのメソッドを呼び出す必要がありますか? PHP SDK を使用せずに、自分でセッションから削除する必要がありますか? $_REQUEST または $_SESSION で getSignedRequest を受け取っている限り、getSignedRequest は常に同じ結果を返すと思います。

お知らせ下さい!前もって感謝します!

4

2 に答える 2

2

ここでの問題はサードパーティの Cookie にあると思います。これは私がよく遭遇するものです。

私が過去に解決した方法は、署名されたリクエストの初期ロードをチェックし、存在する場合は、未加工の署名されたリクエストデータをすべてのリンクのクエリ変数に追加することです(つまりhttp://www.example.com/page&signed_request=<<signed_request>>

きれいではありませんが、iframe 内にあるため、URL はビューから隠されています。アプリケーションが iframe 内にない場合は、これを行うことをお勧めしません。

また、リクエスト内のデータに影響を与える可能性のある Javascript またはサーバー側のコードを確認し、それに応じて URL を修正する必要があります。

これよりも優れた作業方法があることを願っていますが、これが私がこれまでに見つけた唯一の方法です (ナビゲーションのために Facebook の URL で app_data クエリ変数を使用する必要はありません)。

于 2012-03-25T22:16:40.483 に答える
0

signedRequest を Session に保存して再利用するのはどうですか?

$signedRequest = $facebook->getSignedRequest();
if(isset($signedRequest)) $_SESSION['signedRequest'] = $signedRequest;
else $signedRequest = $_SESSION['signedRequest'];
于 2011-11-22T18:41:15.100 に答える