[英]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&width&height=290&colorscheme=light&show_faces=true&header=true&stream=false&show_border=true&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.