【问题标题】:Adding Facebook Library in Codeigniter 4在 Codeigniter 4 中添加 Facebook 库
【发布时间】:2021-01-31 17:27:01
【问题描述】:

我在我的项目中使用 CI 4,我需要 Facebook 登录来获取我在 fb-JS-sdk 中完成的用户数据,然后我将数据保存到数据库并为该用户启动会话,所以看起来它是直接的通过facebook登录登录,但这不是重点,

现在使用 Facebook 登录后,用户将从支付网关捐款,并将被重定向到成功页面,该页面将显示感谢您的支付消息,现在我想在成功页面上添加更多内容 = 我想在用户的 FB 墙上发布消息“我刚刚在现场捐赠了出于 foo 的原因......等等......”。

我知道我需要 Fb 用户令牌,这是我在从 js-sdk 进行 fb 登录期间已经保存在 DB 中的那个。

我对 codeigniter 很陌生,不知道如何添加 facebook 库并在我的控制器中使用/初始化它。我没有使用作曲家。

所以我将 fb-php-sdk 添加到我的应用程序/库中(从 gi​​thub 下载)

所以我尝试了:

<?php 
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Libraries\Facebook;

class User extends BaseController {

    public function __construct(){

        helper('url','form');
        
    }

    public function success() {
        require_once ('Libraries/Facebook/autoload.php');
        $fb = new Facebook(); // loads and creates instance
        
        $a = $fb->getDefaultGraphVersion();
        print_r($a);

        $session = session();

        $page = [
            'name' => 'success_payment',
            'title' => $_SESSION['fname']." ".$_SESSION['lname']." Thank You - ".SITENAME,
            'fb_token' => $_SESSION['fb_token'],
        ];

        echo view('templates/header', $page);
        echo view('success_payment'); //this template have success msg for successful payment..thank u and all
        echo view('templates/footer');

    }

}

我遇到了错误。

Warning: Uncaught ErrorException: require_once(Libraries/Facebook/autoload.php): failed to open stream: No such file or directory in C:\xampp\htdocs\bb\app\Controllers\User.php:55 Stack trace: #0 C:\xampp\htdocs\bb\app\Controllers\User.php(55): CodeIgniter\Debug\Exceptions->errorHandler(2, 'require_once(Li...', 'C:\\xampp\\htdocs...', 55, Array) #1 C:\xampp\htdocs\bb\app\Controllers\User.php(55): require_once() #2 C:\xampp\htdocs\bb\system\CodeIgniter.php(918): App\Controllers\User->success() #3 C:\xampp\htdocs\bb\system\CodeIgniter.php(404): CodeIgniter\CodeIgniter->runController(Object(App\Controllers\User)) #4 C:\xampp\htdocs\bb\system\CodeIgniter.php(312): CodeIgniter\CodeIgniter->handleRequest(NULL, Object(Config\Cache), false) #5 C:\xampp\htdocs\bb\public\index.php(45): CodeIgniter\CodeIgniter->run() #6 {main} thrown in C:\xampp\htdocs\bb\app\Controllers\User.php on line 55

Fatal error: App\Controllers\User::success(): Failed opening required 'Libraries/Facebook/autoload.php' (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\bb\app\Controllers\User.php on line 55

谁能指导我如何在 CI4 中集成自定义库。?? 很抱歉没有使用作曲家以及糟糕的英语。

【问题讨论】:

  • 你试过require_once('../Libraries/Facebook/autoload.php')吗?您还应该知道的是 CI4 会加载 Libraries 文件夹下的每个 php 文件。尝试删除 require_once 并查看它如何处理它。
  • 我试过了,但没用。由于我没有使用作曲家,我不知道如何包含和使用库对象。谢谢你的建议。 CI4 确实是个好东西,但没有多少解决方案或 wiki。
  • 将facebook库文件夹复制到application/libraries文件夹,然后在库$autoload['libraries']applications/config/autoload.php注册facebook
  • 你是如何安装 facebook 库的?
  • 我没有安装它。我刚刚将Facebook 文件夹(我从git 下载)粘贴到我的app/Libraries/。而已。我没有在这个项目中使用作曲家。

标签: php facebook codeigniter xampp codeigniter-4


【解决方案1】:

加载库的最简单方法是使用composer,特别是在完全支持composer的Codeigniter 4中。

在你的项目中做一个简单的:

$ composer require facebook/graph-sdk

之后,您的库将自动加载,因此您只需声明正确的命名空间即可在控制器上使用它。

如果你不能真正使用作曲家,你实际上做了第一点,并将 facebook 库添加到你的 App/Libraries 文件夹或你的 app/third_party 目录中。但是在这种情况下,您需要在自动加载时注册所述库,或者只需在控制器上手动加载。

如果你有它在你的 third_party 文件夹中,你可以像这样自动加载它:

$classmap = [
    'Facebook' => APPPATH .'third_party/_insertFilenameHere_.php'
];

如果上述方法都没有找到该类,并且该类没有命名空间,则自动加载器将在 /app/Libraries 和 /app/Models 目录中查找文件。

如果您选择将库添加到您的库文件夹,那么您也需要将其添加到您的自动加载中。

$psr4 = [
    'App'         => APPPATH,                // To ensure filters, etc still found,
    APP_NAMESPACE => APPPATH,                // For custom namespace
    'Config'      => APPPATH . 'Config',
    'Libraries'   => APPPATH . 'Libraries'   // Your custom Libraries
];

这样,您的 App/Libraries 文件夹中的所有库都可以使用了。

这就是为什么我会使用第三方代码而不是库的原因。库文件夹通常用于您为应用程序构建的类,而不是完整的第三方代码。这应该在作曲家包或第三方文件夹中。

【讨论】:

    猜你喜欢
    • 2021-09-26
    • 2011-09-03
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    相关资源
    最近更新 更多