2012-01-11 8 views
0

Facebook(iFrame)タブを追加したFacebookページがあります。 Facebook PHP SDKを使用してSignedRequest情報を取得しています。私はこの情報を使って、ユーザーがFacebookページを好きかどうかを確認しています。Facebook内のサブページのSignedRequest情報

これはうまく動作し、SignedRequest情報内の 'page'配列を取得しますが、サブページ(同じサブドメイン上の直接URLを使用)をクリックすると、この情報にはもうアクセスできなくなります。

この情報をiFrameタブ内のサブページで取得するにはどうすればよいですか?

答えて

1

最初にタブが読み込まれたときに署名された要求が表示されるようです。 ベストソリューションは、likedのステータスをセッションに保存し、これを他のサブページで使用することです。

1

facebookがあなたのウェブサイトのコンテンツに読み込まれたとき(アプリケーション設定で指定したURLに基​​づいて)、signed_requestオブジェクトが取得されます。そのiframe内のリンクやリダイレクトは、追跡する責任があります。あなたはそれを様々なやり方で行うことができます。 1)サーバー上でセッションを実行します。 2)クッキーを落として、それを監視する。 3)クエリ文字列に何かを置く(しかし、これはハック可能です)。

0

こんにちは私はちょうどこの問題で苦労した日後完璧に動作するソリューションを見つけたので、私はそれを共有することに決めました。

これは、DMCSセッション変数によって提案されたソリューションの一部です。そして、あなたは後の段階(例えばすなわちタブサブページ)上のすべての情報にアクセスすることができます

session_start(): 

$signedRequest = $facebook->getSignedRequest(); 

if(isset($signedRequest)) $_SESSION['signedRequest'] = $signedRequest; 
else $signedRequest = $_SESSION['signedRequest']; 

まず、このような電子セッション変数にすべての署名要求情報を格納する必要があります。 print_r($ signedRequest)を実行して、必要な情報へのアクセス方法を確認してください。ユーザーがページを気に入った場合の例をチェックするためにだけ実行します。

if (!$_SESSION['signedRequest']['page']['liked']) { 
//Content for users that haven't liked the page 
} 

ここで重要なことは、セッション変数に全体の$ signedRequestを格納することです。私はまず、必要な情報だけをセッション変数に格納しようとしましたが、うまくいきません。どうしてか分かりません。

誰かに役立つことを願っています。

関連する問題