如何让用户只进入一次facebook比赛

时间:2012-02-16 13:34:04

标签: php facebook facebook-like facebook-page

我正在创建一个Facebook扇形门,当用户喜欢我的页面时,它会显示一个允许用户参加比赛的表格。

我如何检查用户是否已参加比赛。

因此,当浏览器请求包含我的Facebook页面的iframe时,我的php文件将首先检查用户是否已经进入比赛(基于用户的脸谱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-&gt; page-&gt;已赞)这似乎总是评估为false,即使用户喜欢该页面

任何想法为什么?

干杯

2 个答案:

答案 0 :(得分:1)

我看到的最简单的方法就是将喜欢您页面的用户存储在数据库中,因此当用户喜欢您的页面时,您可以检查他是否已进入竞争状态。 Signed request应该为您提供当前用户的facebook id,应该存储。

答案 1 :(得分:1)

我希望你将表单提交的结果存储在一个表中,你可以在那里存储一个包含facebook的userID的userID列,然后可以匹配它,你将“拥有”获取用户的基本信息。另一种选择是让用户在那里键入电子邮件,但不保证。