簡體   English   中英

檢查用戶是否已經喜歡粉絲頁面

[英]Check if user already likes fanpage

是否可以通過Javascript或PHP檢查用戶是否已經從我的網站上喜歡我的臉書粉絲頁?

編輯:我需要一個解決方案,因此用戶不需要首先驗證/允許一些持久性

<?php
require '../src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId' => 'APP_ID',
  'secret' => 'APP_SECRET',
));

$user = $facebook->getUser();
$page_id = "123456789";
$page_name = $facebook->api("/".$page_id)['name'];
$page_link = $facebook->api("/".$page_id)['link'];



if ($user) {
  try {
    $likes = $facebook->api("/me/likes/".$page_id);
    if( !empty($likes['data']) )
        echo "I like!";
    else
        echo "not a fan!";
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'user_likes'
  ));
}

// rest of code here
?>

最簡單的方法是調用Graph API來獲取/me/likes連接(注意你必須要求user_likes權限)。 然后瀏覽每個並將id與您頁面的ID進行比較。

假設您正在使用官方的Facebook PHP SDK ,並設置了Facebook對象的實例(請參閱上述頁面中的使用部分),可以使用以下代碼來確定用戶是否是Daft Punk的粉絲:

$our_page_id = '22476490672'; // This should be string
$user_is_fan = false;
$likes = $facebook->api( '/me/likes?fields=id' );
foreach( $likes['data'] as $page ) {
    if( $page['id'] === $our_page_id ) {
        $user_is_fan = true;
        break;
    }
}

現在,您可以進一步使用$user_is_fan變量。

在JavaScript中,代碼非常相似。 使用官方JavaScript SDK的方法FB.api (再次假設您已經采用了身份驗證):

FB.api('/me/likes?fields=id', function(response) {
    var our_page_id = '22476490672';
    var user_is_fan = false;
    var likes_count = response.data.length;
    for(i = 0; i < likes_count; i++) {
        if(response.data[i].id === our_page_id) {
            user_is_fan = true;
            break;
        }
    }
});

請注意,這里我們使用異步請求和回調,因此使用user_is_fan變量的代碼必須在函數內部。

如果您對用戶提供權限沒問題,對於基於PHP的網站,可以通過這種方式輕松完成:

1- 在這里創建一個新的Facebook應用程序。

2 - 從這里下載Facebook PHP SDK。 提取文件並將其放在與您將粘貼下面代碼的文件相同的文件夾中!

3 - 使用此工具獲取您的Facebook頁面ID。

4 - 從這里為您的頁面生成類似Facebook的框代碼。

完成1,2,3和4步后,您可以使用以下代碼檢查用戶是否喜歡某個頁面:

<?php
    require('facebook.php');
    $config = array(
         'appId' => 'your facebook app id',
         'secret' => 'your facebook app secret code',

        'allowSignedRequest' => false
    );
    $facebook = new Facebook($config);
    $user_id = $facebook->getUser();
    if (isset($user_id)) {
        try {           
            $likes = $facebook->api('/me/likes/your_facebook_page_id_here', 'GET');             

            if (!empty($likes['data'])) // if user has liked the page then $likes['data'] wont be empty otherwise it will be empty
            {
                echo 'Thank you for liking our fan page!';                   

            }
            else {
                echo 'You have not liked our fan page! Like it now:';
                ?>                   
                <iframe src="//www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fchillopedia&amp;width&amp;height=290&amp;colorscheme=light&amp;show_faces=true&amp;header=true&amp;stream=false&amp;show_border=true&amp;appId=1392604484339363" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:290px;" allowTransparency="true"></iframe> //replace this with your own Facebook like box code
                <?php
            }
        } catch (FacebookApiException $e) {
            $login_url = $facebook->getLoginUrl();
            echo '<a href="' . $login_url . '">Please click here to login into your Facebook account.</a>';
            error_log($e->getType());
            error_log($e->getMessage());
        }
    } else {
        $login_url = $facebook->getLoginUrl();
        echo '<a href="' . $login_url . '">Please lick here to login into your Facebook account</a>';
    }
    ?>

用戶將點擊“請點擊此處登錄您的Facebook帳戶”。 文本將其重定向到Facebook應用程序權限頁面,一旦用戶允許您的應用程序的權限,代碼將獲取用戶的數據,並將顯示如果用戶不喜歡您的粉絲頁面的likebox。

似乎“/ me / likes / [page_id]”並不總是返回記錄,即使有一個。 最近我通過“/ me / likes / [page_id]”請求,它會返回0,但如果我請求沒有page_id,但是通過“/ me / likes /”獲取一堆記錄,你會看到page_id實際上是在那里,無法理解為什么。

當用graph.facebook.com/ [page_id]檢查時,只有可疑的東西是它的“can_post”是假的,而其他“/ me / likes / [page_id]”確實有效,是真的。

但在這種情況下循環並不好,特別是一些瘋狂的人有數百萬的喜歡。 是否有任何與page_id所有者帳戶相關的隱私設置會導致問題?

<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
appId : 'YOUR_APP_ID_WITHIN_QUOTES', //Change this to your app id
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
</script>



$signed_request = $_REQUEST["signed_request"];

list($encoded_sig, $payload) = explode('.', $signed_request, 2);

$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
$has_liked = $data["page"]["liked"];

現在檢查$ has_liked參數,看看用戶是否喜歡你的頁面!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM