hello world facebook app中的require_once问题

时间:2009-11-20 18:58:00

标签: php facebook

我是开发Facebook应用程序的新手。我有以下问题,如果有人可以提供帮助,我会很高兴。

我在facebook上注册了我的应用程序,并将代码和php客户端库上传到托管服务器。如果我使用下面的代码,那么一切正常。

<?php

require_once('./facebook/php/facebook.php');

/* initialize the facebook API with your application API Key
  and Secret */
$facebook = new Facebook("<my_api_key>","<my_secret_key>");

$user = $facebook->require_login();

echo "<p>Your User ID is: $user</p>";

echo "<p>Your name is: <fb:name uid=\"$user\" useyou=\"false\"/></p>";

echo "<p>You have several friends: </p>";
$friends = $facebook->api_client->friends_get();
echo "<ul>";

foreach ($friends as $friend)  {
echo "<li><fb:name uid=\"$friend\" useyou=\"false\" /></li>"; 
}
echo "</ul>";

/* Echo some information that will
  help us see what's going on with the Facebook API: */
echo "<pre>Debug:" . print_r($facebook,true) . "</pre>";


?>

但是,如果我将代码分成两个文件,如下所示,当我导航到http://apps.facebook.com/myapp

时,我只得到一个空白的画布

appinclude.php

<?php
require_once('./facebook/php/facebook.php');

/* initialize the facebook API with application API Key
  and Secret */
$facebook = new Facebook("<my_api_key>","<my_secret_key>");

$user = $facebook->require_login();

?>

的index.php

<?php

require_once('./appinclude.php');

echo "<p>Your User ID is: $user</p>";

echo "<p>Your name is: <fb:name uid=\"$user\" useyou=\"false\"/></p>";

echo "<p>You have several friends: </p>";
$friends = $facebook->api_client->friends_get();
echo "<ul>";

foreach ($friends as $friend)  {
echo "<li><fb:name uid=\"$friend\" useyou=\"false\" /></li>"; 
}
echo "</ul>";

/* Echo some information that will 
  help us see what's going on with the Facebook API: */
echo "<pre>Debug:" . print_r($facebook,true) . "</pre>";

?>

有什么方法可以解决这个问题吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

我设置应用程序的方法是将所有文件放在同一目录中,这样就不会产生混淆。

/Myapp/index.php

<?php
require_once('appinclude.php');
?>

/Myapp/appinclude.php

<?php
require_once('facebook.php');
?>

Myapp目录如下所示:

/Myapp/jsonwrapper/JSON/JSON.php
/ MYAPP / jsonwrapper / JSON / LICENSE
/Myapp/jsonwrapper/jsonwrapper.php
/Myapp/jsonwrapper/jsonwrapper_inner.php
/Myapp/facebook.php
/Myapp/facebookapi_php5_restlib.php
/Myapp/appinclude.php
/Myapp/index.php

在你的第二个例子中,布局需要像这样工作:

/facebook/php/facebook.php
/Myapp/AnotherDirectory/index.php
/Myapp/appinclude.php

请注意,appinclude.php和index.php不在同一个文件夹中。 index.php在上面的目录中查找文件appinclude.php,appinclude.php在上面的目录中查找文件facebook / php / facebook.php。如果要从require语句的前面删除点和斜线,它将在同一目录中查找所有内容。基本上你需要意识到的是。{in require_once('./appinclude.php');中的./表示在这个目录之上。

答案 1 :(得分:0)

我会检查文件路径。

在您的第二个(非工作版本)中,您试图在名为“facebook / php /”的目录中包含一个文件。

如果这是您指定为应用程序根目录的目录,那么我猜Facebook不会允许您在该目录级别下包含文件。