2011-01-16 13 views
5

C'è un modo per determinare se un utente di Facebook "piace" una determinata pagina con le offerte di Facebook dell'API al momento?Come determinare se l'utente di Facebook "piace" una determinata pagina

UPDATE

ho cercato di arrivare a questo lavoro tramite l'API grafico di PHP per un po 'con questo codice.

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

Tuttavia, la sessione è sempre nullo, anche se sono entrato.

Apparentemente, il codice di cui sopra è solo un bene per le applicazioni di Facebook Connect "tela", io chiamo questo codice da una scheda FBML su una "Pagina" di Facebook attraverso una chiamata AJAX al mio server.

Non ho molta familiarità con tutta la terminologia di sviluppo di Facebook.

Come posso ottenere i "Mi piace" dell'utente corrente nella mia situazione?

risposta

2

Si sta utilizzando l'API grafico, quindi nel feed è presente un oggetto Mi piace che contiene l'Id degli utenti a cui piace quel particolare articolo post/feed.

Inoltre è possibile eseguire la query utilizzando gli apis FQL.

0

Per ottenere l'utente piace, è necessaria l'autorizzazione user_likes.
Basta aggiungere l'autorizzazione per l'attributo perms fb:login-button e la volta successiva che l'utente effettua l'accesso, gli verrà chiesto di concedere all'applicazione l'accesso alla nuova autorizzazione.

11

C'è un modo per farlo senza richiedere il permesso e senza utilizzare alcun tipo di API.

Se si dispone di 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; 
?> 

È possibile utilizzare $ has_liked per avvolgere il vostro contenuto specifico-fan

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

sostituisce

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

E 'molto utile e conveniente, dal momento che chiedere il permesso è un turn-off.

+0

Nel caso in cui qualcun altro stia riscontrando problemi con il parametro signed_request che non viene visualizzato, prova a modificare l'URL della scheda di pagina o l'URL della tela per puntare a un file specifico, ad es. invece di impostarlo su http://example.com/app, impostalo su http://example.com/app/index.php – gregdev

Problemi correlati