Как разрешить пользователю участвовать в конкурсе только один раз - PullRequest
0 голосов
/ 16 февраля 2012

Я создаю фан-фейсбук, который, когда пользователю нравится моя страница, отображает форму, позволяющую пользователю принять участие в конкурсе.

Как мне проверить, если пользователь ужепринял участие в конкурсе.

Поэтому, когда браузеры запрашивают фрейм, содержащий мою страницу в Facebook, мой php-файл сначала проверяет, принял ли пользователь участие в конкурсе (на основе идентификатора пользователя facebook), а затем показываетопределенное изображение, если не показать форму ввода для конкурса.

edit

, так что это мой код в данный момент

<?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...";
    }
}
?>

это тоже проверка, понравилась ли пользователю страница или нет, но, похоже, она не работает.($ signatureRequest-> page-> like) это, кажется, всегда оценивается как false, даже если пользователю понравилась страница

есть идеи, почему?

Cheers

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Я надеюсь, что вы сохраняете результаты отправки формы в таблице, вы можете сохранить там столбец userID, содержащий идентификатор пользователя Facebook, а затем сопоставить его, вам «придется» получить основную информацию для пользователей.Другой вариант - указать адрес электронной почты пользователя, но это не гарантируется.

1 голос
/ 16 февраля 2012

Самый простой способ, который я вижу, - это просто хранить пользователей, которым понравилась ваша страница, в базе данных, поэтому, когда пользователю нравится ваша страница, вы можете проверить, не участвовал ли он уже в конкурсе. Подписанный запрос должен предоставить вам идентификатор Facebook текущего пользователя, который должен быть сохранен.

...