2011-11-18 11 views
6

Estoy construyendo una aplicación iframe que tendrá algunas menciones de que la página de Facebook está activa. Mi aplicación se agregará a varias páginas con diferentes nombres. Lo que necesito es algo como esto ...¿Hay alguna forma de obtener el nombre de una página de Facebook con PHP?

$page_name = "Bob's Toys"; 

Thank you for visiting the <?php echo $page_name; ?> page! 

¿Hay alguna manera de hacerlo?

+0

¿Estás diciendo que quieres que la aplicación sepa sobre la página de Facebook que contiene? Su pequeño ejemplo de código realmente no lo explica. Y por "nombre de página" ¿te refieres literalmente al título? – Tesserex

+0

Sí, necesito el título de la página. – Dustin

Respuesta

5

Sí, sí. Decodifique el signed_request enviado a la página por Facebook.

if (!empty($_REQUEST['signed_request'])) { 
    $signedRequest = $_REQUEST['signed_request']; 
    list($sig, $payload) = explode('.', $signedRequest, 2); 
    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 
} 

De eso, puede obtener la identificación de la página.

array (size=4) 
    'algorithm' => string 'HMAC-SHA256' (length=11) 
    'issued_at' => int 1321635439 
    'page' => 
    array (size=3) 
     'id' => string '19292868552' (length=15) 
     'liked' => boolean false 
     'admin' => boolean true 
    'user' => 
    array (size=3) 
     'country' => string 'gb' (length=2) 
     'locale' => string 'en_US' (length=5) 
     'age' => 
     array (size=1) 
      'min' => int 21 

continuación, puede utilizar la API de gráficos para devolver el objeto de página que se vería así: https://graph.facebook.com/19292868552

+0

Gracias Moz. Lo que necesito entender es el nombre de la página, no el ID. Puedo obtener la identificación haciendo esto .. 'if (! Empty ($ _ REQUEST ['signed_request'])) { $ signedRequest = $ _REQUEST ['signed_request']; list ($ sig, $ payload) = explode ('.', $ SignedRequest, 2); $ data = json_decode (base64_decode (strtr ($ payload, '-_', '+ /')), verdadero); } echo $ signed_request ['page'] ['id']; ' Pero cuando' echo $ signed_request ['page'] ['name']; 'No obtengo nada. – Dustin

+1

A continuación, puede usar el ID para realizar una solicitud a Graph API para obtener el objeto de la página; vea el bit al final de mi respuesta :) –

+0

Lo siento ... Soy bastante nuevo en todo esto. ¿Cómo sacaría el nombre del gráfico? Gracias por toda su ayuda :) – Dustin

1

acaba de obtener el identificador de página, consultar el gráfico con name campo solo. algo así como:

<?php 
$signed_request = $_REQUEST["signed_request"]; 
list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

if (!empty($data["page"])) { 
    $page_info = json_decode(file_get_contents("https://graph.facebook.com/{$data['page']['id']}?fields=name")); 
    echo $page_info->name; 
} 
?> 
+0

Acabo de probar su código y no devolvió nada :(¿Es extraño que si voy a https://graph.facebook.com/116338515048403 solo dice "falso"? – Dustin

+0

Asegúrese de que la página esté público (no privado o "no publicado" todavía)! – ifaour

+0

No es privado o no se ha publicado: -/ – Dustin

0

Puede probar esto:

$page_profile = $facebook->api('/' . $pageid); 
echo "<a href='" . $page_profile['link'] . "'>" . $page_profile['link'] . "</a>"; 
+0

Esto no logra lo que pidió el OP. – Florent

0

esto funcionó para mí

$ page_profile = $ facebook-> api ('/' $ PageID.);

$ page_name = $ page_profile ['name'];

+1

considere agregar una explicación. De lo contrario, podría no ser útil para otros que Lee esto. –

Cuestiones relacionadas