Bonjour,

J'ai voulu essayer de mettre en place un facebookConnect avec le SDK V5 mais j'ai un problème pour récupérer les informations utilisateur.
Voici mon code
index.php

use Facebook\Facebook;
if(!session_id()) {
    session_start();
}

require_once __DIR__ . '/vendor/autoload.php';

$fb = new Facebook([
    'app_id'     => '{api_id}',
    'app_secret' => '{secret}',
    'default_graph_version' => 'v2.6'
]);
$helper = $fb->getRedirectLoginHelper();

$permissions = ['email', 'public_profile', 'user_birthday']; 
$callback = 'http://facebook.exemple.com/login.php';
$loginUrl = $helper->getReRequestUrl($callback, $permissions);

echo '<a href="'.$loginUrl.'">Log in with Facebook!</a>';

login.php

use Facebook\Facebook;
use Facebook\Exceptions\FacebookSDKException;
if(!session_id()) {
    session_start();
}

require_once __DIR__ . '/vendor/autoload.php';

$fb = new Facebook([
    'app_id'     => '{api_id}',
    'app_secret' => '{secret}',
    'default_graph_version' => 'v2.6'
]);
$helper = $fb->getRedirectLoginHelper();

if(isset($_SESSION) && isset($_SESSION['facebook_access_token'])){
    header('Location: ok.php');
}

try {
    $accessToken = $helper->getAccessToken();
} catch(FacebookSDKException $e) {
    echo $e->getMessage();
    exit;
}

if (isset($accessToken)) {
    $_SESSION['facebook_access_token'] = (string) $accessToken;
    header('Location: ok.php');
    exit;
} elseif ($helper->getError()) {
    var_dump($helper->getError());
    var_dump($helper->getErrorCode());
    var_dump($helper->getErrorReason());
    var_dump($helper->getErrorDescription());
    echo "<a href='index.php'>Retour</a>";
    exit;
}

http_response_code(400);
exit;

ok.php

use Facebook\Facebook;

if(!session_id()) {
    session_start();
}
require_once __DIR__ . '/vendor/autoload.php';

$fb = new Facebook([
    'app_id'     => '{api_id}',
    'app_secret' => '{secret}',
    'default_graph_version' => 'v2.6'
]);
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
$response = $fb->get('/me');

$profil = $response->getGraphUser();

echo "<pre>";
print_r($profil->getFirstName());
echo "</pre>";
echo "<pre>";
print_r($profil->getId());
echo "</pre>";
echo "<pre>";
print_r($profil->getName());
echo "</pre>";
echo "<pre>";
print_r($profil->getEmail());
echo "</pre>";

echo "<a href='logout.php'>Déconnexion</a>";

Je ne récupère que l'id et le name en résultat.
j'ai essayé do modifié

$response = $fb->get('/me?fields=id,name,email');

cette methode fonctionne pour récupérer l'email mais il faut du cout ajouter un a un les elements.

Je voudrais savoir si l'un de vous serais me dire comment charger toutes les permissions demande dans l'index.php

$permissions = ['email', 'public_profile', 'user_birthday']; 

ou si l'un de vous peut m'aider a trouver la liste complete des fields pour que je puisse récupérer les informations voulu.
j'ai fouller dans la doc de faceboook mais c'est un bordel pas possible et je ne trouve pas cette liste.
j'ai essayé des noms au hasard comme firstName lastName mais ça a fais planté mon script.

Je vous remercie d'avance pour votre aide.

2 réponses


Huggy
Réponse acceptée

Bonjour,
J'ai vu ici qu'il y avait moyen de debugger la query
as-tu essayé ?

SirPixel
Auteur

Exelent ça m'offre une liste des fields et permet de les tester.
Pour ceux que sa interresse j'ai suivi ce lien
Me reste plus qu'a m'aracher la tête avec twitter et google.