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.