2011-01-16 15 views
5

¿Hay alguna forma de determinar si un usuario de Facebook le 'gusta' cierta página con la API que Facebook ofrece actualmente?Cómo determinar si el usuario de Facebook 'le gusta' a cierta página

ACTUALIZACIÓN

he estado tratando de conseguir que esto funcione a través de la API gráfica de PHP desde hace un tiempo con este código.

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

Sin embargo, la sesión es siempre nula, a pesar de que estoy conectado.

Al parecer, el código anterior sólo es bueno para aplicaciones de Facebook Connect "lona", que llamo el código de una pestaña FBML en una "Página" de Facebook a través de una llamada AJAX a mi servidor.

No estoy muy familiarizado con toda la terminología de desarrollo de Facebook.

¿Cómo puedo obtener los "Me gusta" del usuario actual en mi situación?

Respuesta

2

Si utiliza la API de gráficos, entonces hay un objeto "Me gusta" en la fuente que contiene Id de los usuarios que les gusta esa entrada/elemento de fuente en particular.

También puede disparar la consulta utilizando las API FQL.

0

Para obtener los gustos del usuario, necesita el permiso user_likes.
Solo agregue el permiso a su atributo de fb:login-button perms y la próxima vez que el usuario inicie sesión, se le pedirá que otorgue a su aplicación acceso al nuevo permiso.

11

Hay una manera de hacerlo sin pedir permiso y sin usar ningún tipo de API.

Si tiene 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; 
?> 

Puede utilizar $ has_liked para envolver su contenido-fan específica

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

reemplaza

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

Es muy útil y conveniente, ya pedir permiso es un desvío.

+0

En caso de que alguien más tenga problemas con el parámetro signed_request que no se procesa, intente cambiar su URL de página o URL de Canvas para que apunte a un archivo específico, por ej. en lugar de configurarlo en http://example.com/app, configúralo en http://example.com/app/index.php – gregdev

Cuestiones relacionadas