Bonjour,

J'ai un problème au niveau de la connexion via Facebook. J'ai suivi le tuto pas-à-pas et j'ai un problème au niveau de l'authentification automatique venant sans aucun doute des informations en Session.

Donc j'ai bien supprimer le code suivant dans le fichier facebook.php du SDK Facebook :

<?php
    if (!session_id()) {
      session_start();
    }
?>

Mais malgré ça, j'ai toujours ce problème d'authentification. Le système me log au niveau de la vue facebook.ctp, celle ou l'on demande un username. Ci-dessous, ma fonction :

<?php
    public function facebook(){
    require APPLIBS.'Facebook'.DS.'facebook.php';
    $facebook = new Facebook(array(
        'appId' => ' ***************',
        'secret' => ' ********************************'
    ));

        $user = $facebook->getUser();
    if($user){
        try{
        $info = $facebook->api('/me');
        if($this->request->is('post')){
            $data = $this->request->data'User'];
            $d = array(
                'username' => $data'username'],
                'facebook_id' => $info'id'],
                'mail' => $info'email']
            );

                        if($this->User->save($d)){
                $u = $this->User->read();
                $this->Auth->login($u'User']);
                $this->redirect('/');
            }else{
                $this->Session->setFlash('Check your error', 'notif', array(
                    'type' => 'error'
                ));
                }
        }

                $d = array();
        $d'user'] = $info;
        $this->set($d);
        }catch(FacebookApiException $e){
        $this->Session->setFlash('An error was occured', 'notif', array('type' => 'error'));
        }
    }else{
        $this->Session->setFlash('No response from Facebook', 'notif', array(
            'type' => 'error'
        ));
        $this->redirect(array('action' => 'login'));
        }
    }
?>

ça fait un bon moment que je cherche sans rien trouver. C'est peut être déjà arrivé à l'un d'entre vous.

Merci d'avance en tout cas pour les futures réponses.

2 réponses


Ptitchef
Réponse acceptée

Bonjour,
Rajoutes au début de ta fonction :

$this->Session->write('test','test');

regardes le commentaire de unixvers sur le tuto

kal-el
Auteur

Salut ptitchef ,

Effectivement en rajoutant ça, c'est nickel ça fonctionne. Je lirai plus attentivement les commentaires la prochaine fois ;)

Merci beaucoup