我正在创建一个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,即使用户喜欢该页面
任何想法为什么?
干杯
答案 0 :(得分:1)
我看到的最简单的方法就是将喜欢您页面的用户存储在数据库中,因此当用户喜欢您的页面时,您可以检查他是否已进入竞争状态。 Signed request应该为您提供当前用户的facebook id,应该存储。
答案 1 :(得分:1)
我希望你将表单提交的结果存储在一个表中,你可以在那里存储一个包含facebook的userID的userID
列,然后可以匹配它,你将“拥有”获取用户的基本信息。另一种选择是让用户在那里键入电子邮件,但不保证。