2013-03-12 160 views
0

我有同一个目录中的所有文件(facebook.php,base_facebook.php,index.php)。我的服务器是Apache,并且都支持php。 我的代码:facebook 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语句是打印:对象ID#1。然后它执行我的下一个打印声明。然后它返回未捕获的致命错误。我在这里错过了什么?

为什么服务器不能得到正确的访问令牌?

+0

你需要如果失败。我通常不会在请求中包装try/catch。如果找不到所需的文件,您希望脚本失败。除非你会尝试和优雅地处理。一旦你解决这个问题,这不是一个很可能的情况。 – mkaatman 2013-03-12 15:31:45

+1

“Class'Facebook' not found” - 这是明显的消息我相信:)你是否能够包含任何其他文件? 'echo get_include_path()'可能会帮助 – 2013-03-12 15:44:11

+0

@Ruslan Polutsygan,是的,我可以包含其他文件。我尝试了echo get_include_path()。它告诉我这是从这里包含的文件:。/ usr/share/php:/ usr/share/pear – Rilcon42 2013-03-12 15:57:09

回答

2

您未能require facebook.php,因此ERROR1: Object id #1 - 您试图回显异常错误对象。尝试

catch ($e) { 
    die($e->getMessage()); 
} 

改为。

你不应该捕捉那种错误。如果一个需求失败,唯一有用的解决方案是放弃执行,因为你没有得到你需要的继续执行。

基本上你已经实现了一个PHP版本的visual basic的on error resume next,伴随着它的所有令人讨厌的愚蠢。

+0

你说得对“对象ID#1”的来源 – Rilcon42 2013-03-12 15:55:07

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风格将更好的维护;-)

+0

我做了改变,但它并没有影响我的代码的功能。 – Rilcon42 2013-03-12 15:50:42