2013-11-23 79 views
0

我一直在試圖讓Facebook SDK與Codeigniter一起工作,但它不工作。我現在用了大約8個小時的時間來搜索這個問題,所以我終於進來並且來到這裏。Codeigniter和Facebook API

1)我把facebook.phpbase_facebook.php.CRT文件我應用程序/庫文件夾內。

2)我創建了一個控制器來處理我未來Ajax集成的所有Facebook API方法。

3)我將庫加載到我的新控制器的構造函數中。

這是我得到的錯誤。

An Error Was Encountered 
Unable to load the requested class: Facebook 

我的控制器類看起來像這樣。

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Fbapi extends Base_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() { 
     $this->load->library('facebook', $this->config->item('fb_api')); 
    } 

} 

所有關閉我的庫文件名都是小寫字母,類名是UCFIRST。

我試圖使一個新的庫調用test_library呼應到瀏覽器的響應,並且這工作完全正常,所以我真的很爲難,爲什麼沒有被載入我的Facebook的圖書館...

謝謝提前。

回答

2

它未被加載的原因是因爲它不是CodeIgniter庫,所以不能將它作爲一個導入。相反,要訪問Facebook對象,您需要像在PHP中一樣導入文件。

我會用這樣的:

// Include the Facebook PHP SDK 
require_once("facebook/facebook.php"); 

// Create the Facebook object 
$config = array(); 
$config['appId'] = $this->config->item('facebook_app_id'); 
$config['secret'] = $this->config->item('facebook_secret'); 
$config['fileUpload'] = false; 
$facebook = new Facebook($config); 

可以使用$facebook對象,然後訪問SDK。

你需要修改的require_once()路徑指向您的facebook.php文件,你需要把配置設置爲您的CodeIgniter配置facebook_app_idfacebook_secret,但我用類似這樣的東西之前和它工作得很好。

如果你在Facebook SDK上做了很多工作,你可能也想考慮把它分解成一個單獨的CodeIgniter庫並編寫與Facebook接口的方法 - 在我的例子中,我這樣做了,因爲有幾個我需要檢查用戶是否登錄到Facebook並將其變爲單獨的庫的地方使事情變得更容易。或者您可以將它放在構造函數中,將其存儲爲$this->facebook而不是$facebook,並可在整個控制器中訪問它。

+0

感謝您的幫助馬特。只是爲了我的一般知識和學習Codeigniter框架,是否有將Facebook類加載到Codeigniter的更簡潔的方法?我不認爲Codeigniter庫必須以某種方式進行佈局,並且實際上只是一個本地PHP類,可以在控制器中更加整潔地重用它們。 –

+0

@BradBird不是。像Laravel這樣的一些更新的框架是圍繞Composer構建的,這使得它很容易乾淨地使用第三方庫,但是CodeIgniter有點陳舊而且很蹩腳。在我的情況下,我編寫了一個CodeIgniter庫來與Facebook對象進行交互,但這可能不適合您的情況。 –

+0

謝謝你馬特。很有幫助。 –