2011-01-16 26 views
5

Có cách nào để xác định xem người dùng Facebook có thích một trang nhất định với API Facebook cung cấp hiện tại không?Cách xác định xem người dùng Facebook 'Thích' một trang nhất định

CẬP NHẬT

Tôi đã cố gắng làm điều này để làm việc thông qua API biểu đồ PHP một lúc với mã này.

$fbconfig['appid'] = '***'; 
$fbconfig['api'] = '***'; 
$fbconfig['secret'] = '***'; 

try { 
    include_once "facebook.php"; 
} catch(Exception $o) { 
    echo '<pre>'; 
    print_r($o); 
    echo '</pre>'; 
} 

$facebook = new Facebook(array(
    'appId' => $fbconfig['appid'], 
    'secret' => $fbconfig['secret'], 
    'cookie' => true, 
)); 

$session = $facebook->getSession(); 
$me = null; 

if ($session) { 
    try { 
     $uid = $facebook->getUser(); 
     $me = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
     d($e); 
    } 
} 

if($me) { 
    try { 
     $likes = $facebook->api('/me/likes'); 
    } catch(Exception $o) { 
     d($o); 
    } 
} 

Tuy nhiên, phiên giao dịch luôn luôn là null, mặc dù tôi đang đăng nhập.

Rõ ràng, các mã trên chỉ tốt cho Facebook Connect "Canvas" ứng dụng, tôi kêu gọi mã này từ một thẻ FBML trên Facebook "Trang" thông qua cuộc gọi AJAX đến máy chủ của tôi.

Tôi không quen thuộc với tất cả thuật ngữ phát triển của Facebook.

Làm cách nào để nhận được lượt thích của người dùng hiện tại trong tình huống của tôi?

Trả lời

2

Bạn đang sử dụng API biểu đồ, sau đó có một đối tượng thích trong nguồn cấp dữ liệu chứa Id của những người dùng thích bài đăng/nguồn cấp dữ liệu cụ thể đó.

Ngoài ra, bạn có thể kích hoạt truy vấn bằng cách sử dụng api FQL.

0

Để người dùng thích, bạn cần có sự cho phép user_likes.
Chỉ cần thêm quyền cho thuộc tính perm fb:login-button của bạn và lần tiếp theo người dùng đăng nhập, anh ta sẽ được yêu cầu cấp quyền truy cập ứng dụng của bạn cho quyền mới.

11

Có cách để thực hiện điều đó mà không yêu cầu quyền và không sử dụng bất kỳ loại API nào.

Nếu bạn có PHP:

<?php 
$signed_request = $_REQUEST["signed_request"]; 

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

$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

$app_data = isset($data["app_data"]) ? $data["app_data"] : ''; 
$_REQUEST["fb_page_id"] = $data["page"]["id"]; 
$access_admin = $data["page"]["admin"] == 1; 
$has_liked = $data["page"]["liked"] == 1; 
?> 

Bạn có thể sử dụng $ has_liked để bọc nội dung quạt cụ thể của bạn

<?php if($has_liked) : ?> 
fan-specifc 
<?php else : ?> 
for non-fans only 
<?php endif; ?> 

thay thế

<fb:visible-to-connection> 
fan-specific content 
<fb:else> 
for non-fans only 
</fb:else> 
</fb:visible-to-connection> 

Nó rất hữu ích và thuận tiện, kể từ yêu cầu cho phép là một turn-off.

+0

Trong trường hợp bất kỳ ai khác gặp sự cố với tham số signed_request không đến, hãy thử thay đổi URL trang tab hoặc URL Canvas để trỏ đến tệp cụ thể, ví dụ: thay vì đặt nó thành http://example.com/app, đặt nó thành http://example.com/app/index.php – gregdev

Các vấn đề liên quan