2011-11-18 17 views
6

Buduję aplikację iframe, która będzie miała kilka wzmianek o stronie na Facebooku. Moja aplikacja zostanie dodana do wielu stron o różnych nazwach. Potrzebuję czegoś takiego.Czy istnieje sposób na uzyskanie nazwy strony na Facebooku za pomocą PHP?

$page_name = "Bob's Toys"; 

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

Czy istnieje sposób, aby to zrobić?

+0

Czy chcesz, aby aplikacja wiedziała o stronie zawierającej Facebook? Twój mały przykładowy kod naprawdę tego nie wyjaśnia. A przez "nazwę strony" masz na myśli dosłownie tytuł? – Tesserex

+0

Tak, potrzebuję tytułu strony. – Dustin

Odpowiedz

5

Tak, jest. Odkodować signed_request wysłany do strony przez Facebooka.

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

Z tego można uzyskać identyfikator strony.

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 

Następnie można użyć Graph API, aby przywrócić obiekt strony, która będzie wyglądać następująco: https://graph.facebook.com/19292868552

+0

Dzięki Moz. To, czego potrzebuję, to nazwa strony, a nie id. Mogę uzyskać identyfikator, wykonując to ... 'if (! Empty ($ _ REQUEST ['signed_request'])) { $ signedRequest = $ _REQUEST ['signed_request']; lista ($ sig, $ payload) = eksploduje ('.', $ SignedRequest, 2); $ data = json_decode (base64_decode (strtr ($ payload, '-_', '+ /')), true); } echo $ signed_request ['page'] ['id']; ' Ale kiedy' echo $ signed_request ['page'] ['name']; "Nic nie dostaję. – Dustin

+1

Możesz następnie użyć identyfikatora, aby wykonać żądanie do Graph API, aby uzyskać obiekt strony - zobacz bit na końcu mojej odpowiedzi :) –

+0

Przykro mi ... Jestem całkiem nowy w tym wszystkim. Jak mogę pobrać nazwę z wykresu? Dzięki za twoją pomoc :) – Dustin

1

Wystarczy uzyskać identyfikator strony, zapytanie wykres z tylko name dziedzinie. coś takiego:

<?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

Po prostu wypróbowałem twój kod i nic nie zwróciło :(Czy to dziwne, że gdy przejdę na https://graph.facebook.com/116338515048403, po prostu mówi "false"? – Dustin

+0

Upewnij się, że strona jest publiczny (nie prywatny lub "jeszcze nie opublikowany")! – ifaour

+0

To nie jest prywatne lub ustawione na nieopublikowane: -/ – Dustin

0

Można spróbować to:

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

Nie osiąga tego, co zadeklarowało PO. – Florent

0

ten pracował dla mnie

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

$ page_name = $ page_profile ['name'];

+1

należy rozważyć dodanie wyjaśnienia, w przeciwnym razie może nie być przydatne dla innych, którzy Przeczytaj to. –

Powiązane problemy