如何允许用户只参加一次facebook比赛


How to allow a user only enter a facebook competition once

我正在创建一个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

有什么想法吗?

干杯

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

我看到的最直接的方法就是简单地将喜欢您页面的用户存储在数据库中,这样当用户喜欢您的页面时,您可以检查他是否已经参加了竞争。已签名的请求应向您提供当前用户的脸书id,该id应存储。