我想创建一个有下载链接的页面。只有在Facebook上喜欢我的粉丝页面的用户才能看到。否则它会显示为按钮。
我使用以下代码,但
<?php
include_once("php/src/facebook.php");
// Create our Application instance.
$facebook = new Facebook(array(
'appId' => '354967071210221',
'secret' => 'APP_Secret',
'cookie' => true,
));
$signed_request = $facebook->getSignedRequest();
// Return you the Page like status
$like_status = $signed_request["page"]["liked"];
if($like_status)
{
echo 'User Liked the page';
// Place some content you wanna show to user
}else{
echo 'User do not liked the page';
// Place some content that encourage user to like the page
}
?>
答案 0 :(得分:1)
您可以使用FQL查询获取此信息
1)找出你的page_id
SELECT page_id, pic FROM page WHERE username="grasphub"
(它表示你的page_id是354967071210221)
2)使用此查询检查用户是否喜欢您的页面
SELECT page_id FROM page_fan WHERE page_id=354967071210221 AND uid = me()
如果用户不喜欢您的网页,此查询将返回空结果。
所以,你的代码将是:
include_once("php/src/facebook.php");
// Create our Application instance.
$facebook = new Facebook(array(
'appId' => '354967071210221',
'secret' => 'APP_Secret',
'cookie' => true,
));
$user = $facebook->getUser();
if ($user) { // Checks if there is already a logged in user
try {
$result = $facebook->api( array(
'method' => 'fql.query',
'query' => 'SELECT page_id FROM page_fan WHERE page_id=354967071210221 AND uid = me()',
));
if (!empty($result[0]['page_id'])) {
echo 'User Liked the page';
} else {
echo 'User do not liked the page';
}
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
} else { //Ask for bare minimum login
$login_url = $facebook->getLoginUrl();
header("Location: ".$login_url);
}
答案 1 :(得分:0)
如果此代码有效
如果
,你可以设置在你的文件中显示你的文件if($like_status)
{
echo 'User Liked the page';
// Place some content you wanna show to user
}
测试它!!!
喜欢/不同于您的FB页面并检查页面将返回的内容,如果它为您提供不同的值,那么它的工作和内部如果你知道用户喜欢你的页面..
答案 2 :(得分:0)
首先尝试
$signed_request = $facebook->getSignedRequest();
print_r($signed_request);
如果它为空或者包含正确的数据,则应检查应用程序设置(画布网址,标签网址等)。
答案 3 :(得分:0)
客户端或服务器端有两个选项:
这是一个关于客户端脚本的精彩教程的链接
http://www.saschakimmel.com/2010/05/how-to-capture-clicks-on-the-facebook-like-button/
对于服务器端 - 您需要获得用户访问他/她喜欢的权限 - 我不使用FB SDK,我自己创建了代码:
- 首先,用户必须使用此URL登录:
$loginUrl = "https://www.facebook.com/dialog/oauth?client_id={$appId}&redirect_uri= {$redirectUri}&scope={$scopeEncoded}"
;
$url = "https://graph.facebook.com/oauth/access_token?client_id={$appId}&redirect_uri={$redirectUri}&client_secret={$secretKey}&code={$code}";
现在,您已获得令牌,您可以使用此网址向用户提出curl请求:https://graph.facebook.com/me/likes?access_token=$accessToken
循环浏览喜欢的内容并查看用户是否喜欢您的网页,或使用此网址:
$ url =“https://graph.facebook.com/me/likes/{$yourpageId}/?access_token={$accessToken}”;
答案 4 :(得分:0)
这可以使用图形API完成.edge.create侦听like按钮的click事件。
FB.Event.subscribe('edge.create',function(response)
{
download();
});
FB.api("me/likes/page_id", function(response)
{
if ( response.data.length == 1 )
{
//Has liked the page
} else
{
//Havent liked the page
}});
源代码和下载脚本 - http://www.webtuts.info/webdevelopment/facebook-download-script-2/225/