我将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;
?>
答案 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'];
而不是一次又一次地抓取它们。