检查用户是否已经喜欢粉丝页面

Sim*_*sen 9 javascript php facebook

是否可以通过Javascript或PHP检查用户是否已经从我的网站上喜欢我的脸书粉丝页?

编辑:我需要一个解决方案,因此用户不需要首先验证/允许一些持久性

Mig*_*uña 13

<?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
?>
Run Code Online (Sandbox Code Playgroud)


Mat*_* G. 12

最简单的方法是调用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;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以进一步使用$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;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

请注意,这里我们使用异步请求和回调,因此使用user_is_fan变量的代码必须在函数内部.

  • 是的,用户需要使用`user_likes`权限登录. (2认同)