Bonjour à tous,
Celà fait maintenant une semaine que je me prends la tête sur le sdk de facebook! Qu'elle bonne surprise ai-je ue en voyant le tuto de Grafikart. Même si je comprends tout dans le tuto, je n'arrive cependant pas à l'adapter à CakePHP.
J'ai demandé à mon ami Google et essayer les codes que j'ai pu trouver mais rien ne marche. Voici ce que j'ai fait

//AppController.php 
<?php
function beforeFilter(){
App::import('Vendor', 'facebook', array('file' => 'facebook' . DS . 'php-sdk-v4'.DS.'src'.DS.'Facebook'.DS.'FacebookSession.php'));
use Facebook\FacebookSession;
}
?>

Déjà à cette étape, j'ai une erreur:
"Error: syntax error, unexpected 'use' (T_USE) "

J'ai essayé avec l'autoload.php. ça ne change rien. Mon dossier Vendor se trouve dans le dossier App avec l'arborescence suivante:
facebook/php-sdk-v4/src/Facebook

J'ai installer avec composer (ou cas où ça aurait une importance.

Bref je ne sais plus comment faire...
Si quelqu'un à réussis, je veux bien de l'aide!

Merci d'avance!!! Et bonne année!

6 réponses


Grafikart
Réponse acceptée

n'utilise pas App::uses mais met un use au début de ta class (comme si tu n'utilisais pas cakephp)

Charge CakePHP via composer puis le SDK Facebook tu l'utilisera via l'autoloader :)

Woozim
Auteur

Bonjour et merci de ta réponse.
Je viens d'essayer comme suit:
dans mon composer.json:

"require": {
        "facebook/php-sdk-v4" : "4.0.*"
    },

ensuite j'ai fait un "php composer.phar install" dans mon cmd.exe. Les fichiers sont bien créés dans le dossier vendor à la racine de mon site. Du coup je les est déplacé dans le fichier Vendor du dossier App.

Ensuite dans mon AppController:

<?php
function beforeFilter() {
    require_once dirname(__DIR__) . '/Vendor/autoload.php';
 ?>

dans mon UsersController pour vérfier si ça fonctionne

public function facebook(){
        if(!$_SESSION){session_start();}

        FacebookSession::setDefaultApplication('#################', '#######');
        $helper = new FacebookRedirectLoginHelper('http://localhost/tester/users/facebook');
        echo $helper->getLoginUrl(['email']);

    }

Message d'erreur: "Error: Class 'FacebookSession' not found "
du coup j'essaye de faire un "use Facebook\FacebookSession; " et que ce soit dans mon UserController ou AppController, même erreur que la première fois "syntax error, unexpected 'use' (T_USE) "

J'ai deux choix: je suis une quiche ou je suis une quiche! :(

Tu as chargé le namespace ?

Woozim
Auteur

en faisant un App::use mais jai toujours la même erreur... je ne cible peut être pas le bon dossier?
Enfin pour être honnête je ne sais pas de trop.
Et j'en profites pour te remercier pour tes super Tuto.

Woozim
Auteur

Merci! Je n'étais pas du tout sure de moi avec composer et du coup ça m'as fais oublié la base. C'est quand même bien lourd le système FB! mais obligatoire presque...