0

我想创建一个有下载链接的页面。这仅对在 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
}
?>
4

5 回答 5

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);
}
于 2012-10-23T14:21:42.030 回答
0

This could be done using graph API .edge.create listens to the click event of like button.

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  
 }});

source and download script - http://www.webtuts.info/webdevelopment/facebook-download-script-2/225/

于 2012-11-08T18:09:23.030 回答
0

首先尝试

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

如果它是空的或不包含正确的数据,您应该检查您的应用程序设置(画布 url、标签 url 等)

于 2012-10-23T13:24:04.903 回答
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 的权限
  • 接受 & 重定向后,使用 $code = $_GET['code'] 获取 url 中的代码
  • 最后一步是获取令牌,你需要使用 curl 向这个 URL 发出请求

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

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

  • 遍历喜欢并找出用户是否喜欢您的页面或使用此 URL:

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

于 2012-10-23T13:53:41.383 回答
0

如果此代码有效

如果你可以在里面设置显示你的文件

if($like_status)
{
    echo 'User Liked the page';
    // Place some content you wanna show to user
}

测试它!

喜欢/与您的 FB 页面不同,并检查页面将返回的内容,如果它为您提供不同的价值,那么它的工作和在此内部如果您知道用户喜欢您的页面..

于 2012-10-23T13:19:05.303 回答