2010-10-10 2 views
0

Я делаю регистрацию на своем веб-сайте через facebook.Извлечение информации пользователя из facebook

Когда пользователь входит в систему через facebook, возвращаемый массив $ user не является тем, что я хочу.

Я прошел через пользовательские параметры, которые доступны через facebook, и я попытался их реализовать, но он не работает.

Это пример того, что у меня есть

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); 
} 

Что я не делаю правильно?

Спасибо

Update

Я использую FQL выбрать данные пользователя из Facebook теперь,

$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); 

Он извлекает все данные, кроме рождения и электронной почты

Как выбрать адрес электронной почты и день рождения?

Благодаря

+0

Вы никогда не упоминали, что именно вы хотите. – serg

ответ

1

Ваше приложение нуждается в user_birthday и email разрешения для этого, иначе она не будет возвращать эту информацию. Вам нужно только предоставить параметры, которые нужно разрешение, а не какие поля вы хотите в параметре req_perms, поэтому он должен выглядеть следующим образом:

$url = $facebook->getLoginUrl(array(
    'req_perms' => 'email, user_birthday', 
    'next' => 'http://www.zzzzzzz.com/facebook_register.php', 
    'cancel_url' => 'http://www.zzzzzzz.com' 
)); 
Смежные вопросы