【问题标题】:How to allow a user only enter a facebook competition once如何允许用户只参加一次 Facebook 比赛
【发布时间】:2012-02-17 01:26:41
【问题描述】:

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

任何想法为什么?

干杯

【问题讨论】:

  • 暂时离电脑很远,会尽快放好
  • 我不确定您需要回答什么问题?如何获得唯一条目?或者如何检查页面喜欢的状态?

标签: php facebook facebook-like facebook-page


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 抱歉,signed_request 不会存储该信息,除非该用户已授权该应用。
    猜你喜欢
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 2014-02-11
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多