0

我正在使用带有 FOSFacebookBundle 的 FOSUserBundle 示例。在此我已经构建了我的应用程序。

相关的项目结构如下:

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

这是为什么?如何从我的默认控制器内部访问 facebook 类?如果 facebookprovider 已经可以使用,为什么我的控制器无法使用?

任何提示将不胜感激!

4

2 回答 2

0

问题在这里:

use \BaseFacebook;
use \FacebookApiException;

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

于 2012-11-20T16:46:09.867 回答
0

该问题的解决方案是,facebook-class 没有命名空间,您必须执行类似的操作

$facebook = new \Facebook(...)
于 2012-11-20T15:05:50.603 回答