2013-03-12 208 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