Php Wordpress标题中包含的文件在正文中不可用

Php Wordpress标题中包含的文件在正文中不可用,php,facebook,wordpress,facebook-graph-api,facebook-php-sdk,Php,Facebook,Wordpress,Facebook Graph Api,Facebook Php Sdk,我在Wordpress header.php中包含了Facebook SDK,在这个文件中,SDK运行良好。但是,当我尝试在使用标题的页面中使用SDK时,我会收到错误消息,说某些对象没有定义,等等,就好像从未包含该文件一样 基本上,我可以让用户的FB信息显示在页面的页眉上,但其他地方没有 编辑: 下面是header.php文件的一部分: <?php include_once('facebook-php-sdk/src/facebook.php'); $config = array(); $

我在Wordpress header.php中包含了Facebook SDK,在这个文件中,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;
?>

我认为您在拥有的每个文件中都包含了这个头文件。因此,每次都会创建一个新的facebook对象——可能是新的facebook会话——这是错误的做法

错误:

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

是由于会话中没有当前用户,因此您无法调用任何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'];

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

您必须显示一些相关代码。当我尝试在页面上回显$fbUsername时,我得到一个错误:必须使用活动访问令牌来查询有关当前用户的信息。我在每个页面的开头都包含一次标题。所以我确信它在我的站点的任何位置只加载一次。我正在执行$user_id检查,它在header.php中返回true,但在页面文件中失败。我认为问题不在于访问令牌。这是因为$facebook对象在页面上没有定义,即使它在标题中工作。通过将$facebook obj设置为global,我在某种程度上解决了这个问题,但我仍在寻找解决方案。