2011-11-18 119 views
6

我正在构建一个iframe应用程序,它将提供Facebook页面的一些提及。我的应用程序将被添加到具有不同名称的多个页面。我需要的是这样的东西..有没有办法用PHP获取Facebook页面的名字?

$page_name = "Bob's Toys"; 

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

有没有办法做到这一点?

+0

你是说你想让应用知道关于包含Facebook的页面吗?你的小代码示例并没有真正解释它。而通过“网页名称”,你的意思是字面上的标题? – Tesserex

+0

是的,我需要页面标题。 – Dustin

回答

5

是的。解码通过Facebook发送到页面的signed_request

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

从这里,你可以得到页面的ID。

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 

然后你可以使用图形API返回的页面对象,应该是这样的:https://graph.facebook.com/19292868552

+0

谢谢Moz。我需要得到的是页面的名称,而不是id。 'if(!empty($ _ REQUEST ['signed_request'])){ $ signedRequest = $ _REQUEST ['signed_request']; list($ sig,$ payload)= explode('。',$ signedRequest,2); $ data = json_decode(base64_decode(strtr($ payload,'-_','+ /')),true); } echo $ signed_request ['page'] ['id'];' 但是当我echo $ signed_request ['page'] ['name'];'我什么都没有。 – Dustin

+1

然后,您可以使用该id来执行对Graph API的请求以获取页面对象 - 请参阅我的答案末尾处的位:) –

+0

对不起......我对这一切都很陌生。我将如何从图表中拉出名字?感谢您的帮助:) – Dustin

1

刚刚得到的页面ID,查询只name场图。是这样的:

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

我刚刚试过你的代码,它没有返回任何东西:(是否奇怪,如果我去https://graph.facebook.com/116338515048403它只是说“false”? – Dustin

+0

确保页面是公开(非私人或“未公布”)! – ifaour

+0

它不是私人的或设置为未发布: -/ – Dustin

0

你可以试试这个:

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

这不会实现OP所要求的。 – Florent

0

这个工作对我来说

$ page_profile = $ facebook-> API( '/' $的pageid);

$ page_name = $ page_profile ['name'];

+1

考虑添加解释。否则,可能对其他人读这个。 –

相关问题