Como faço para incluir ou carregar automaticamente bibliotecas externas em uma extensão de extensão do TYPO3? + Injeção de Dependência?

Estou desenvolvendo um TYPO3 4.6 Extension com Extbase 1.4 e estou tentando incluir uma biblioteca externa. A biblioteca, no meu caso,facebook PHP SDK, está embaixo$_EXTKEY/Resources/PHP/facebook-php-sdk/facebook.php. Eu gostaria que a biblioteca carregasse automaticamente e injetasse automaticamente (Dependecy Injection) onde eu preciso.

Alguns comentários que encontrei online sugerem que se deve incluir bibliotecas com require_once ():

http://forge.typo3.org/issues/33142

se for apenas uma pequena biblioteca auxiliar, ela deve ser armazenada em {PackageRoot} / Resources / PHP / {libraryName} e incluída via require. Isso é suspeito pelo problema no entanto?se o pacote FLOW3 representa principalmente a biblioteca de foreway, como é o caso no pacote Imagine ou Swift, o código da biblioteca é colocado abaixo de {PackageRoot} / Classes diretamente. "

http://lists.typo3.org/pipermail/typo3-project-typo3v4mvc/2011-July/009946.html

"Eu incluiria a classe (usando require_once) de dentro de uma ação específica para lidar com isso. Dessa forma, você tem acesso a essas funções e a classe se torna sua biblioteca."

Eu tentei isso e funciona assim:

<?php
require_once( t3lib_extMgm::extPath('extkey') . 'Resources/PHP/facebook-php-sdk/facebook.php');

class Tx_WsLogin_Domain_Repository_FacebookUserRepository extends Tx_WsLogin_Domain_Repository_UserRepository {

protected $facebook;

public function __construct() {
    $this->setFacebook(new Facebook(array(
        'appId' =>'',
        'secret' => '')
    ));
    parent::__construct();
}

public function setFacebook(Facebook $facebook) {
    $this->facebook = $facebook;
}


public function sampleFunction() {
    $userId = $this->facebook->getUser();
}

}
?>

Mas como posso obtê-lo para carregar automaticamente e injetar automaticamente a biblioteca com a função injectFacebook?

editar:

Gostar@alex_schnitzler&nbsp;e@sorenmalling&nbsp;mencionado sobre o carregamento automático:

@PeterTheOne Coloque todos os arquivos dentro de ext_autoload.php e então use DI ou o gerenciador de objetos.

@PeterTheOne colocou a definição de classe em ext_autoload.php na sua extensão?

Eu tentei assim (arquivo: ext_autoload.php):

<?php

$extPath = t3lib_extMgm::extPath('extKey');

return array(
    'facebook' => $extPath . 'Resources/PHP/facebook-php-sdk/facebook.php',
);

?>

Parece encontrar e incluir o arquivo correto. Mas quando eu tento o usuário Injeção de Dependência (comopeter respondeu) Eu recebo um erro:

Não foi passada uma matriz de informações correta das dependências do construtor!

InvalidArgumentException lançado em arquivo /var/syscp/webs/web1/dev/typo3_src-4.5.15/typo3/sysext/extbase/Classes/Object/Container/Container.php na linha 247.

Eu acho que isso é porque o construtor da classe Facebook tem um argumento requerido $ config.

edit2:

Eu fiz o que peter disse em sua resposta e com a ajuda de@alex_schnitzler&nbsp;e@sorenmalling, que me apontou para o ObjectManager, meu FacebookService se parece com isso agora:

class Tx_Extkey_Service_FacebookService implements t3lib_Singleton {

/**
* @var Tx_Extbase_Object_ObjectManagerInterface
*/
protected $objectManager;

/**
 * Facebook from @link https://github.com/facebook/facebook-php-sdk facebook-php-sdk
 *
 * @var Facebook
 */
protected $facebook;

/**
* @param Tx_Extbase_Object_ObjectManagerInterface $objectManager
*/
public function injectObjectManager(Tx_Extbase_Object_ObjectManagerInterface $objectManager) {
    $this->objectManager = $objectManager;
}

/**
 * 
 */
public function initializeObject() {
    $this->facebook = $this->objectManager->create(
        'Facebook',
        array(
            'appId' =>'input appId here',
            'secret' => 'input app secret here'
        )
    );
}

/**
 * @return Facebook
 */
public function getFacebook() {
    return $this->facebook;
}

}

Para mais ajuda leia:http://forge.typo3.org/projects/typo3v4-mvc/wiki/Dependency_Injection_(DI)&nbsp;as partes sobreinitializeObject ()&nbsp;eCriando Objetos de Protótipo por meio do Gerenciador de Objetos