2010-10-10 3 views
0

Je fais une inscription sur mon site via facebook.Récupération des informations sur l'utilisateur à partir de facebook

Lorsque l'utilisateur se connecte via facebook, le tableau $ utilisateur retourné n'est pas exactement ce que je veux.

J'ai parcouru les paramètres utilisateur qui sont accessibles via facebook, j'ai essayé de les implémenter aussi mais ça ne marche pas.

Ceci est un exemple de ce que je

require_once "Database_Connect.php"; 
if (!isset($_POST['choosepassword'])) 
{ 
# We require the library 
$user=array(); 
require("facebook.php"); 
# my error tracker 
$error=0; 

# Creating the facebook object 
$facebook = new Facebook(array(
    'appId' => 'xxx', 
    'secret' => 'xxx', 
    'cookie' => true 
)); 

# Let's see if we have an active session 
$session = $facebook->getSession(); 

if(!empty($session)) { 
    # Active session, let's try getting the user id (getUser()) and user info (api->('/me')) 
    try{ 
    $uid = $facebook->getUser(); 
    $user = $facebook->api('/me'); 
    } catch (Exception $e){} 

    if(!empty($user)){ 
    # User info ok? Let's print it (Here we will be adding the login and registering routines) 
    print_r($user); 

    ***At this point what is retrieved is not exactly what i want***** 

    $ue=$user['email'];$ui=$user['id']; 
    $query = mysql_query("select * from members where email = '$ue' or (oauth_provider = 'facebook' AND oauth_uid = '$ui')", $link); 
    $result = mysql_fetch_array($query); 

    # If not, let's add it to the database 
    if(!empty($result)){ 
    $error = 2; //record already in database 
    require_once "facebook_error.php"; 
    die(); 
    } 
    } else { 
    # For testing purposes, if there was an error, let's kill the script 
    $error = 1; //we were unable to retrieve info frm facebook 
    require_once "facebook_error.php"; 
    die(); 
    } 
} else { 
    # There's no active session, let's generate one 
    $login_url = $facebook->getLoginUrl(); 

*** I tried specifying what i want returned here, but it doesnt seem to work***** 

    $url = $facebook->getLoginUrl(array(
    'req_perms' => 'uid, first_name, last_name, name, email, current_location, user_website, user_likes, user_interests, user_birthday, pic_big', 
    'next' => 'http://www.zzzzzzz.com/facebook_register.php', 
    'cancel_url' => 'http://www.zzzzzzz.com' 

)); 
    header("Location: ".$login_url); 
} 

Qu'est-ce que je fais pas?

Merci Vous

Mise à jour

J'utilise FQL pour sélectionner les informations utilisateur de facebook maintenant,

$fql = "select uid, first_name, last_name, name, sex, email, current_location, website, interests, birthday, pic_big from user where uid=me()"; 
      $param = array('method' => 'fql.query', 'query' => $fql, 'callback' => ''); 
      $user = $facebook->api($param); 

Il récupère toutes les données à l'exception du anniversaire et l'e-mail

Comment puis-je sélectionner l'email et l'anniversaire?

Merci

+0

Vous ne dit ce que vous voulez exactement. – serg

Répondre

1

Votre application a besoin des autorisations pour ce user_birthday et email, sinon il ne reviendra pas cette information. Vous ne devez fournir les paramètres qui ont besoin d'une autorisation, et non pas ce que les champs que vous voulez dans le paramètre req_perms, il devrait donc ressembler à ceci:

$url = $facebook->getLoginUrl(array(
    'req_perms' => 'email, user_birthday', 
    'next' => 'http://www.zzzzzzz.com/facebook_register.php', 
    'cancel_url' => 'http://www.zzzzzzz.com' 
)); 
Questions connexes