php - 在 Codeigniter 4 中添加 Facebook 库

标签 php facebook codeigniter xampp codeigniter-4

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

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

我知道我需要 Fb 用户 token ,这是我在从 js-sdk 保存在数据库中的 fb 登录期间已经拥有的。

我是 codeigniter 的新手,不知道如何添加 facebook 库并在我的 Controller 中使用/初始化它。我没有使用 Composer 。

所以我将 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 中集成自定义库吗?? 很抱歉没有使用 composer 以及糟糕的英语。

最佳答案

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

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

$ composer require facebook/graph-sdk

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

在您不能真正使用 Composer 的情况下,您实际上做对了第一步并将 facebook 库添加到您的 App/Libraries 文件夹或您的 app/third_party foder。但是,在这种情况下,您需要在自动加载上注册所述库,或者仅在 Controller 上手动加载它。

如果你有它在你的 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 文件夹中的所有库都可以使用了。

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

关于php - 在 Codeigniter 4 中添加 Facebook 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64401885/

相关文章:

php - 有没有办法让ajax请求始终按顺序进行?

php - 我可以将 Ion auth 设置为通过用户名或电子邮件登录吗

php - Foursquare API for venue user image error

php - 如何将 php 文档合并为 1 个文档?

php - 可以在 "UUID()"上设置长度吗?

php - Facebook 图形 API 仅返回某些网站的名称和 ID

php - PHP echo 中的文本不会在浏览器中显示

Android 应用程序使用 Facebook 登录 : An active access token must be used to query information about the current user

ios - 喜欢来自原生 iOS 应用程序的 Facebook 页面

javascript - 基础5遵守正常提交