“Class 'Facebook\Facebook' not found”是Facebook SDK错误。

15

我刚接触 Facebook SDK,按照指南上的步骤操作,但出现了错误,不知道为什么?

 Fatal error: Class 'Facebook\Facebook' not found in C:\wamp\www\index.php on line 134

错误代码所在行:

<?php 
$fb = new Facebook\Facebook([
  'app_id' => '{app-id}',
  'app_secret' => '{app-secret}',
  'default_graph_version' => 'v2.2',
  ]);
?>

这不是我编造的,这恰恰是Facebook指南中提到的相同代码!我该怎么办?


2
你有包含 facebook.php 文件吗? - Shivam
不行!把它放在哪里? - Wocugon
3个回答

32

在使用 Facebook API 的 PHP SDK 文档中提到,要想访问服务方法和类,你需要首先包含 autoloader。你试图使用命名空间的类 Facebook\Facebook,但是在 PHP 文件中并没有这个类,因此无法使用它的方法。

require_once 'src/Facebook/autoload.php';
//Create the Facebook service
$fb = new Facebook\Facebook ([
    'app_id' => '-----------------',
    'app_secret' => '--------------------',
    'default_graph_version' => 'v2.4'
    ]);

如果您已经安装了Facebook PHP SDK,那么在您的目录中某处,您将找到autoload.php文件,该文件会自动require您需要使用的服务和方法的 .php 文件。


是的,如网站上所述,我已经添加了它! <?php require_once __DIR__ . '/facebook-sdk-v5/autoload.php';?> - Wocugon
你的自动加载没有正确地包含文件吗?尝试进行错误日志记录,你确定从SDK中获取了所有正确的文件吗? - q.Then
1
好的,谢谢!文件是正确的,只是 require 没有放在正确的位置上!愚蠢的错误!但还是谢谢! :) - Wocugon
问题解决了,很高兴能够帮助! - q.Then
2
每个人都说只需包含autoload,但对我来说即使这样也不起作用。看起来Facebook让整个事情变得更加复杂了... - ynef
根据我的经验,可能是因为您使用了错误的路径分隔符,例如“/”而不是“\”。 - DLastCodeBender

7

我认为你需要先将那个php类导入到你的当前文件中

将这行代码放在顶部

use Facebook\Facebook; 

2
这个方法对我有用,只需要执行 require 'vendor/autoload.php'; - Coco

2

从这里下载zip文件:https://github.com/facebook/php-graph-sdk/archive/5.4.zip

步骤:

  1. 解压缩内容(通过双击压缩文件或使用任何可用的解压缩软件来解压缩或解压缩已下载的文件)

  2. 导航到“src”文件夹。

  3. 复制或剪切“src”文件夹,并将其粘贴到您的php文件所在的文件夹中。

  4. 确保您已在php项目工作区内创建了“includes.php”文件,即您的网页所在的文件夹。并将此行添加到您的“includes.php”文件中:

    require_once 'src/Facebook/autoload.php';

  5. 现在,在与Facebook相关的php文件中,您可以添加:

    require_once("includes.php");

  6. 现在保存您的文件并进入浏览器并刷新。

//请记住通过“includes.php”引用可能需要的所有文件来使您的工作有组织。这对于某些开发人员可能会有所不同,具体取决于您正在处理的方式和内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接