Wordpress Header中包含的文件在Body中不可用

时间:2014-04-13 18:28:16

标签: php facebook wordpress facebook-graph-api facebook-php-sdk

我将Facebook SDK包含在Wordpress header.php中,并且在此文件中,SDK工作正常。但是,当我尝试在使用标题的页面中使用SDK时,我会收到错误,说明某些对象未定义等。好像文件从未包含在内。

基本上,我可以让用户的FB信息显示在页面的标题上,但不在其他地方。

编辑: 这是header.php文件的一部分:

<?php
include_once('facebook-php-sdk/src/facebook.php');
$config = array();
$config['appId'] = '***********';
$config['secret'] = '***********************';
$config['cookie'] = true;
$facebook = new Facebook($config);
$user_id = $facebook->getUser();
$user_profile = $facebook->api('/me','GET');

echo $fbUsername = $user_profile['name'];//WORKS HERE
?>

但在页面上:

<?php
get_header();
echo $fbUsername;//not working;
?>

1 个答案:

答案 0 :(得分:0)

我认为您在每个文件中都包含此标题。所以,每次创建一个新的facebook对象 - 所以可能是新的facebook会话 - 这是错误的做法!

错误:

  

&#34;必须使用活动访问令牌来查询有关当前用户的信息

是因为会话中没有当前用户,因此您无法调用任何api:/me...

所以不要一次又一次地创建FB对象,而是在应用程序开始时只创建一次。使用相同的$facebook然后使用主要内容 - 会话/活动访问令牌可以随时过期,因此您应该进行检查:

$user_id = $facebook->getUser();
if($user_id)
  $user_profile = $facebook->api('/me','GET'); 
else
   // get the login url and create new session 

(您可以按照sdk样本进行相同的操作)


您也可以在会话变量中保存名称或其他fb信息,就像 -

一样
session_start();
$_SESSION['fb_user_name'] = $user_profile['name'];

而不是一次又一次地抓取它们。