我将所有文件(facebook.php,base_facebook.php,index.php)放在同一目录中。我的服务器是Apache,都支持php。 我的代码:
<html>
<body>
<?php
try
{
echo("STARTING<br>");
require("facebook.php");
}
catch(Exception $e)
{
echo("ERROR1: $e");
}
try
{
$facebook = new Facebook("***","###");
}
catch(Exception $e)
{
echo("ERROR2: $e");
}
$token = $facebook->getAccessToken();
echo("Access token: ".$token."<br>");
我的文字输出如下:
STARTING
ERROR1: Object id #1before create fb instance
Fatal error: Class 'Facebook' not found in /(FILE PATH)/index.php on line 16
Note: line 16 is: $facebook = new Facebook("***","###");
第一个catch语句是print:Object Id#1。然后它执行我的下一个打印声明。然后它返回未捕获的致命错误。我在这里缺少什么?
为什么服务器无法获得正确的访问令牌?
答案 0 :(得分:2)
你没有require
facebook.php,因此ERROR1: Object id #1
- 你试图回应异常错误对象。尝试
catch ($e) {
die($e->getMessage());
}
代替。
你不应该抓住那种错误。如果一个require失败,唯一有用的解决方案是中止执行,因为你没有得到你需要继续执行的东西。
基本上你已经实现了Visual Basic的on error resume next
的PHP版本,其中包含了所有令人讨厌的愚蠢。
答案 1 :(得分:0)
您应该在发送标头之前放置代码:
转到此处获取更多信息:https://developers.facebook.com/docs/reference/php/
基本上,把它放在你的代码之上:
<?php
require_once("facebook.php");
$config = array();
$config[‘appId’] = 'YOUR_APP_ID';
$config[‘secret’] = 'YOUR_APP_SECRET';
$config[‘fileUpload’] = false; // optional
$facebook = new Facebook($config);
?>
然后加载你的HTML(在MVC风格中更适合维护; - )