【问题标题】:CakePHP FacebookSession class not found issueCakePHP FacebookSession 类未找到问题
【发布时间】:2014-07-14 18:50:22
【问题描述】:

我正在尝试使用 Facebook lib v4 创建一个简单的 Facebook 登录。

我正在关注 Facebook 指南,但我被困在了开始,CakePHP 没有找到 FacebookSession 类,请遵循以下事实:

FacebookSession 类路径:

App/Lib/Facebook/src/Facebook

在控制器中使用:

app::uses('FacebookSession', 'Facebook/src/Facebook');

我认为问题出在这个特定的 Facebook Lib 中,因为我正在使用 WideImage 类,并且我正在应用相同的逻辑来使用该类并且运行良好。

为了记录,我使用的是 PHP 5.4

【问题讨论】:

  • 小写 app,缺少引号,我有点怀疑这就是您的实际代码的样子... ps,请务必提及您的确切 CakePHP 版本!
  • 我已经编辑过了,但我可以说路径拼写错误不是问题,我检查了一千次。

标签: cakephp facebook-php-sdk


【解决方案1】:

自定义路径/包需要注册

首先App::uses() 不是这样工作的。自定义路径/包需要先注册,请参考CakePHP: Unable to load class from custom package

此外,Lib 文件夹用于保存第一方库,第三方库(如 Facebook SDK)应放入 Vendor 文件夹。

另见Cookbook > CakePHP Folder Structure

使用 SDK 附带的 composer 或自动加载器

如果您不能/不想使用the recommended way of including the SDK,即使用composer安装它(使用composer时请确保阅读Installing CakePHP with Composer中的注释),那么您必须确保包含 SDK 附带的 autoload.php 文件,该文件应该像在引导程序中要求它一样简单

require_once APP . 'Vendor' . DS . 'Facebook' . DS . 'autoload.php';

从那里您应该能够使用 SDK 类 as shown in the docs

use Facebook\FacebookSession;

FacebookSession::setDefaultApplication('YOUR_APP_ID','YOUR_APP_SECRET');

$session = new FacebookSession('access-token');

【讨论】:

  • 你提供了很多选择,我只需要一个有效的。我不使用作曲家,我更喜欢不使用作曲家的方式。我将文件夹移动到供应商并尝试了这个: App::build(array('Vendor' => array(APP . 'Vendor' . DS . 'Facebook' . DS . 'src' . DS . 'Facebook'))) ; App::uses('FacebookSession', '供应商');还是不行
  • 嗯,我不认为两个是 很多选项。如果您不想使用 composer,那么使用第二个选项,在您的引导程序中包含 SDK 的自动加载器,您所要做的就是复制并粘贴一行。 @DanielFaria
  • 工作,但我把 require_once APP 。 '小贩' 。 DS 。 'Facebook' 。 DS 。 '自动加载.php';在我使用SDK的Controller内部甚至引导..有问题吗?
  • 我不知道你所说的“...甚至引导”是什么意思。但是,如果您只在该特定控制器中使用 SDK,那么仅在其中包含 SDK 应该没有任何问题。 @DanielFaria
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 2013-03-05
  • 2016-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多