Добавление библиотеки Facebook в Codeigniter 4

#php #facebook #codeigniter #xampp #codeigniter-4

#php #Facebook #codeigniter #xampp #codeigniter-4

Вопрос:

Я использую CI 4 для своего проекта, и мне нужен логин Facebook для получения пользовательских данных, которые я сделал в fb-JS-sdk, и после этого я сохраняю данные в БД и запускаю сеанс для этого пользователя, чтобы выглядело, что он напрямую входит в систему с помощью входа в Facebook, но здесь это не главное,

Теперь после входа в систему с помощью Facebook пользователь будет делать пожертвования из платежного шлюза, и он будет перенаправлен на страницу успеха, на которой будет отображаться сообщение с благодарностью за оплату, теперь я хочу добавить больше на странице успеха = я хочу опубликовать на стене пользователя FB сообщение о том, что «Я только что пожертвовал на сайте по какой-то причине… бла …».

Я знаю, что мне нужен токен пользователя Fb для того, что у меня уже есть во время входа в систему fb из js-sdk, сохраненного в БД.

Я очень новичок в codeigniter и не знаю, как добавить библиотеку facebook и использовать / инициализировать ее в моем контроллере. Я не использую composer.

Итак, я добавил fb-php-sdk в свое приложение / библиотеки (загруженные с github)

Итак, я попытался:

 <?php 
namespace AppControllers;
use CodeIgniterController;
use AppLibrariesFacebook;

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:xampphtdocsbbappControllersUser.php:55 Stack trace: #0 C:xampphtdocsbbappControllersUser.php(55): CodeIgniterDebugExceptions->errorHandler(2, 'require_once(Li...', 'C:\xampp\htdocs...', 55, Array) #1 C:xampphtdocsbbappControllersUser.php(55): require_once() #2 C:xampphtdocsbbsystemCodeIgniter.php(918): AppControllersUser->success() #3 C:xampphtdocsbbsystemCodeIgniter.php(404): CodeIgniterCodeIgniter->runController(Object(AppControllersUser)) #4 C:xampphtdocsbbsystemCodeIgniter.php(312): CodeIgniterCodeIgniter->handleRequest(NULL, Object(ConfigCache), false) #5 C:xampphtdocsbbpublicindex.php(45): CodeIgniterCodeIgniter->run() #6 {main} thrown in C:xampphtdocsbbappControllersUser.php on line 55

Fatal error: AppControllersUser::success(): Failed opening required 'Libraries/Facebook/autoload.php' (include_path='C:xamppphpPEAR') in C:xampphtdocsbbappControllersUser.php on line 55
  

может кто-нибудь подсказать мне, как интегрировать пользовательскую библиотеку в CI4.??
Извините, что не использую composer, а также плохой английский.

Комментарии:

1. Вы пробовали require_once('../Libraries/Facebook/autoload.php') ? Что вы также должны знать, так это то, что CI4 загружает каждый php-файл в папку Libraries. Попробуйте удалить require_once и посмотреть, как он справляется с этим.

2. Я пробовал это, но не работает. Поскольку я не использую composer, я понятия не имею, как я могу включать и использовать object of libraries. Спасибо за предложение. CI4 действительно хорошая вещь, но для нее не так много решений или вики.

3. скопируйте папку библиотеки facebook application/libraries в папку, а затем зарегистрируйте facebook в applications/config/autoload.php in libraries $autoload['libraries']

4. Как вы установили библиотеку Facebook?

5. Я его не устанавливал. Я просто вставил Facebook папку (которую я загрузил из git) в свою app/Libraries/ . вот и все. Я не использую composser для этого проекта.

Ответ №1:

Самый простой способ загрузить библиотеку, особенно в Codeigniter 4, который полностью поддерживает composer, — это использовать composer .

В вашем проекте просто выполните простое:

 $ composer require facebook/graph-sdk
  

После этого ваша библиотека будет загружена автоматически, поэтому вам просто нужно объявить правильное пространство имен, чтобы использовать его на своих контроллерах.

В случае, если вы не можете использовать composer, вы действительно правильно выполнили первый бит и добавили библиотеку facebook в свою папку App / Libraries или в свой app / third_party foder. Однако в этом случае вам нужно либо зарегистрировать указанную библиотеку в своей автозагрузке, либо просто загрузить ее вручную на свой контроллер.

Если у вас есть это в вашей папке third_party, вы можете автоматически загрузить его следующим образом:

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

Если ни один из вышеперечисленных методов не находит класс, и класс не имеет пространства имен, автозагрузчик будет искать в каталогах /app/ Libraries и /app/Models, чтобы попытаться найти файлы.

Если вы выберете добавление библиотеки в свою папку Libraries, вам также нужно добавить ее в автозагрузку.

 $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 или в сторонней папке.