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