如何包含Facebook-SDK

时间:2012-11-20 13:24:09

标签: symfony

我正在使用FOSUserBundle和FOSFacebookBundle的示例。我在这里构建了我的应用程序。

相关的项目结构如下:

src\ABC\MainBundle\
src\ABC\UserBundle\

src\ABC\MainBundle\Controller\DefaultController.php

src\ABC\UserBundle\Security\User\Provider\FacebookProvider.php

vendor\facebook\php-sdk\src\base_facebook.php

FacebookProvider的一部分:

use \BaseFacebook;
use \FacebookApiException;

class FacebookProvider implements UserProviderInterface
{

protected $facebook;

public function __construct(BaseFacebook $facebook, $userManager, $validator)
{
    $this->facebook = $facebook;
}

public function loadUserByUsername($username)
{           
    try {
        $fbdata = $this->facebook->api('/me');

...

正如您所看到的,Facebook-Object已经可用。 我现在想要做的几乎是一样的,但在我的DefaultController中:

use \BaseFacebook;
use \FacebookApiException;

class DefaultController extends BaseController
{
   public function indexAction(){
      $facebook = new Facebook('key', 'secret');
      $fbfriends_obj = $facebook->api('/'.$fbid.'/friends');
...

但是我收到了消息

Fatal error: Class 'ABC\MainBundle\Controller\Facebook' not found in C:\xampp\htdocs\...\src\ABC\MainBundle\Controller\DefaultController.php on line x

为什么?如何从我的defaultcontroller中访问facebook类?如果它已经可以用于facebookprovider,为什么它不能用于我的控制器?

任何提示都会非常感激!

2 个答案:

答案 0 :(得分:0)

该问题的解决方案是,facebook-class没有命名空间,你必须做类似

的事情
$facebook = new \Facebook(...)

答案 1 :(得分:0)

问题出在这里:

use \BaseFacebook;
use \FacebookApiException;

您正在从命名空间导入BaseFacebook类,您应该使用\ Facebook(在Controller和FacebookProvider类中)