如何要求用户喜欢Facebook粉丝页面以使下载按钮可见



我想创建一个下载链接的页面。只能在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
}
?>

您可以使用FQL查询获取此信息

1)查找您的页面_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);
}

如果此代码有效

如果

,可以在此内设置文件
if($like_status)
{
    echo 'User Liked the page';
    // Place some content you wanna show to user
}

测试它!!!

喜欢/与您的FB页面不同,如果您知道用户喜欢您的页面,请检查页面将返回的内容,然后在此内部返回。

首先尝试

$signed_request = $facebook->getSignedRequest();
print_r($signed_request);

如果它是空的或不包含正确的数据,则应检查应用程序设置(canvas url,Tab url等)

您有两个选项客户端或服务器端:

这是一个关于客户端脚本的出色教程的链接
http://www.saschakimmel.com/2010/05/how-to-capture-clicks-on-the-the-facebook-like-button/

对于服务器端 - 您需要获得用户的许可才能访问他/她的喜欢 - 我不使用FB SDK,我制作了自己的代码: - 首先,用户必须使用此URL登录:

$loginUrl = "https://www.facebook.com/dialog/oauth?client_id={$appId}&redirect_uri= {$redirectUri}&scope={$scopeEncoded}";

  • 当用户登录时,FB会询问授予此应用程序的权限以访问Like
  • 接受&amp;重定向,使用$ code = $ _get ['code']
  • 在URL中获取代码
  • 最后一步是要获得令牌,您需要使用卷曲来提出请求

$url = "https://graph.facebook.com/oauth/access_token?client_id={$appId}&redirect_uri={$redirectUri}&client_secret={$secretKey}&code={$code}";

  • 现在,您拥有令牌,可以使用此URL向用户喜欢的卷曲请求:https://graph.facebook.com/me/likes?access_token=$accessToken

  • 循环浏览喜欢的人,并找出用户是否喜欢您的页面或使用此URL:

    $ url =" https://graph.facebook.com/me/likes/{$ yourpageid }/?access_token= {$ accessToken}";

可以使用Graph Api .Edge.Create lisk lick to tock of the of the of tuke按钮。

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/

最新更新