Bonjour à tous,

Je suis sur un système d’authentification facebook et tout se passe correctement à part quand je demande d'afficher le profile car au lieu d'afficher 11 paramètres il n'en affiche que deux.

le fichier index.php

<?php 

error_reporting(E_ALL);
ini_set('display_errors', 1);

session_start();

use App\Facebook\FacebookConnect;

require_once 'vendor/autoload.php';

 $appId = '923516801028139';

 $appSecret = 'a447a55086c56bffebf737f9a7f77cb8';

$connect = new FacebookConnect($appId, $appSecret);

$user = $connect->connect('http://anthonymoreau.fr/yourvalue/index.php');

if(is_string($user)){
    echo "<a href='$user'>Se connecter avec Facebook</a>";
}
else{
    echo "<pre>";
        var_dump($user);
        var_dump($user->getName());
    echo "</pre>";
}

?>

le fichier de gestion de l'api

<?php
/**
 * Created by PhpStorm.
 * User: Anthony
 * Date: 28/07/2015
 * Time: 00:17
 */

namespace App\Facebook;

use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookSession;
use Facebook\FacebookRequest;

error_reporting(E_ALL);
ini_set('display_errors', 1);

class FacebookConnect
{

    private $appId;
    private $appSecret;

    /**
     * @param $appId Facebook Application ID
     * @param $appSecret Facebook Application secret
     */

    function __Construct($appId, $appSecret){
        $this->appId = $appId;
        $this->appSecret = $appSecret;
    }

     /**
     * @param $redirect_url
     * @return string|Facebook\GraphUser Login URL or GraphUser
     */

    function connect($redirect_url){

        FacebookSession::setDefaultApplication($this->appId, $this->appSecret);

        $helper = new FacebookRedirectLoginHelper($redirect_url);

        if(isset($_SESSION) && isset($_SESSION['fb_token'])){
            $session = new FacebookSession($_SESSION['fb_token']);
        }
        else{
            $session = $helper->getSessionFromRedirect();
        }

        if($session){

            try{
               $_SESSION['fb_token'] = $session->getToken();
                 $request = new FacebookRequest($session, 'GET', '/me');
                 $profile = $request->execute()->getGraphObject('Facebook\GraphUser');

                /*if($profile->getEmail() === null){
                    throw new \Exception('L\'email n\'est pas disponible');
                }*/

                return $profile;

                var_dump($profile);

            } catch (\Exception $e){

                unset($_SESSION['fb_token']);
                return $helper->getReRequestUrl(['email']);
            }
        }
        else{
            return $helper->getLoginUrl(['email']);
        }

    }

}

?>

Il m'affiche ceci -->

object(Facebook\GraphUser)#8 (1) {
  ["backingData":protected]=>
  array(2) {
    ["name"]=>
    string(14) "Anthony Moreau"
    ["id"]=>
    string(15) "709778935801014"
  }
}
string(14) "Anthony Moreau"

5 réponses


Pourquoi j'ai pas tout les parametres !
Merci d'avance

Il t'affiche quoi ?

Regarde c'est le site : http://anthonymoreau.fr/yourvalue/index.php

Mon tableau comprend que 2 champs... et je veux vraiment tout le profile genre si c'est un homme ou une femme....

Bonjour,
Je rencontre exactement le même problème. Lors de la connexion avec facebook, j'ai bien la demande d'autorisation avec la récup des informations public et j'ai rajouté l'email.
Malheureusement en retour j'ai uniquement name et id.

Je me suis dit que c'est surement la version du SDK et je suis passé à la v5, et le problème est le même. J'y comprend rien

Voila c'est exactement ça...

Je comrends vraiment pas pourquoi... :/