3 votes

Ajout de la bibliothèque Facebook dans Codeigniter 4

Je suis en train d'utiliser CI 4 pour mon projet et j'ai besoin de la connexion Facebook pour obtenir les données de l'utilisateur, ce que j'ai fait dans fb-JS-sdk et après cela je sauvegarde les données dans la base de données et je démarre une session pour l'utilisateur de sorte qu'il semble qu'il se connecte directement via la connexion Facebook, mais ce n'est pas le point ici,

Maintenant, après la connexion avec Facebook, l'utilisateur fera un don par le biais de la passerelle de paiement et il sera redirigé vers la page de succès qui affichera un message de remerciement pour le paiement, maintenant je veux ajouter plus sur la page de succès = je veux poster sur le mur de l'utilisateur de Facebook avec un message disant "Je viens de faire un don sur le site pour telle raison...blah...".

Je sais que j'ai besoin du jeton d'utilisateur Fb pour cela, que j'ai déjà pendant la connexion fb à partir de js-sdk sauvegardée dans la base de données.

Je suis très nouveau sur codeigniter et je ne sais pas comment ajouter la bibliothèque Facebook et l'utiliser/l'initialiser dans mon contrôleur. Je n'utilise pas composer.

Donc j'ai ajouté fb-php-sdk dans mon app/Libraries (téléchargé depuis github)

Donc j'ai essayé:

getDefaultGraphVersion();
        print_r($a);

        $session = session();

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

        echo view('templates/header', $page);
        echo view('success_payment'); //ce template a le message de succès pour un paiement réussi..merci et tout ça
        echo view('templates/footer');

    }

}

Je reçois des erreurs.

Avertissement: Uncaught ErrorException: require_once(Libraries/Facebook/autoload.php): échec d'ouverture du flux: Aucun fichier ou dossier de ce type dans C:\xampp\htdocs\bb\app\Controllers\User.php:55 Trace de la pile: #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(): Échec de l'ouverture du fichier requis 'Libraries/Facebook/autoload.php' (include_path='C:\xampp\php\PEAR') dans C:\xampp\htdocs\bb\app\Controllers\User.php on line 55

Est-ce que quelqu'un peut me guider sur la façon d'intégrer une bibliothèque personnalisée dans CI4.?? Désolé de ne pas utiliser composer ainsi que pour mon mauvais anglais.

1voto

marcogmonteiro Points 1617

La manière la plus simple de charger la bibliothèque, spécialement dans Codeigniter 4 qui prend en charge complètement composer, consiste à utiliser composer.

Dans votre projet, faites simplement :

$ composer require facebook/graph-sdk

Après cela, votre bibliothèque sera automatiquement chargée, vous devriez simplement déclarer le bon espace de noms pour l'utiliser dans vos contrôleurs.

Dans le cas où vous ne pouvez pas vraiment utiliser composer, vous avez effectivement fait la première partie correctement et ajouté la bibliothèque Facebook à votre dossier App/Libraries ou votre dossier app/third_party. Cependant, dans ce cas, vous devez soit enregistrer ladite bibliothèque dans votre chargement automatique, soit la charger manuellement dans votre contrôleur.

Si vous l'avez dans votre dossier third_party, vous pouvez le charger automatiquement comme suit :

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

Si aucune des méthodes ci-dessus ne trouve la classe, et que la classe n'a pas d'espace de noms, le chargeur automatique cherchera dans les répertoires /app/Libraries et /app/Models pour essayer de localiser les fichiers.

Si vous choisissez d'ajouter la bibliothèque à votre dossier Librairies, vous devez également l'ajouter à votre chargement automatique.

$psr4 = [
    'App'         => APPPATH,                // Pour s'assurer que les filtres, etc. sont toujours trouvés,
    APP_NAMESPACE => APPPATH,                // Pour l'espace de noms personnalisé
    'Config'      => APPPATH . 'Config',
    'Libraries'   => APPPATH . 'Libraries'   // Vos librairies personnalisées
];

De cette manière, toutes les bibliothèques de votre dossier App/Libraries seront prêtes à être utilisées.

C'est pourquoi je choisirais le code de third_party et non les librairies. Le dossier des librairies est normalement utilisé pour les classes que vous avez construites pour votre application et non pour du code externe complet. Cela devrait être dans un paquet composer ou dans le dossier third_party.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X