2012-02-16 2 views
-1

私は、ユーザーが自分のページを気に入っているときに、ユーザーが競技会に参加できるようにするフォームを表示するFacebookのファンゲートを作成しています。ユーザーがfacebookの競技に一度しか参加できないようにする方法

ユーザーがすでに競技に参加しているかどうかを確認するにはどうすればよいですか。

したがって、ブラウザが自分のFacebookページを含むiframeをリクエストすると、私のPHPファイルはまずユーザーが(ユーザーのFacebookのIDに基づいて)競争に参加したかどうかをチェックし、コンテストの入力フォームを表示します。

編集

ので、これは

<?php 
require_once 'facebook-php-sdk/src/facebook.php'; 
$fbAppArray = array(
    'appId' => 'xxx', 
    'secert' => 'xxxxxxx', 
); 
$fbAppObj = new Facebook($fbAppArray); 
$signedRequest = $fbAppObj->getSignedRequest(); 
function parsePageSignedRequest() 
{ 
    if(isset($_REQUEST['signed_request'])) 
    { 
     $encoded_sig = null; 
     $payload = null; 
     list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2); 
     $sig = base64_decode(strtr($encoded_sig, '-_', '+/')); 
     $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true)); 
     return $data; 
    } 
    return false; 
} 
?> 

私は、ユーザーがページを気に入ったりしていない場合、これはあまりにもチェックされ、この

<?php 
if($signedRequest == parsePageSignedRequest()) 
{ 
    if($signedRequest->page->liked) 
    { 
     echo "you liked me"; 
    }else{ 
     echo "Please like the application so you will be able to see the contents..."; 
    } 
} 
?> 

を呼び出して、現時点での私のコードは、ですが、それは動作していないようです。 ($ signedRequest-> page-> liked)これはユーザーがページを気に入っても常にfalseと評価されているようです

なぜですか?私が見

乾杯

+0

現時点でコンピュータからちょうど離れて、すぐにそれを入れます – molleman

+0

答えが必要なのは何の質問ですか?ユニークなエントリを取得するには?ページの好きなステータスをチェックする方法は? – DMCS

答えて

1

フォーム提出の結果をテーブルに保存しておきたい場合は、userIDカラムにFacebookのuserIDが格納されていることを確認してから一致させることができます。もう1つの選択肢は電子メールのユーザタイプを持つことですが、それは保証されていません。

1

最もまっすぐ進む方法は、単純にデータベース内のページを気に入ったユーザーを記憶しているので、ユーザーがページを好きな時に、彼はすでに競争に入っていた場合、あなたは確認することができます。 Signed requestには、現在のユーザーのfacebook idを提供する必要があります。これは保存する必要があります。

+0

申し訳ありませんが、 'signed_request'はそのユーザーがアプリを承認しない限りその情報を保存しません。 – DMCS