如何让用户喜欢facebook粉丝页面,让下载按钮可见?

时间:2012-10-23 13:16:03

标签: php 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
}
?>

5 个答案:

答案 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}";

  • 当用户登录时,FB会询问是否授予此应用程序访问Likes
  • 的权限
  • 接受&amp;重定向,使用$ code = $ _GET ['code']
  • 获取网址中的代码
  • 最后一步是获取令牌,您需要使用curl向此URL发出请求

$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/