2010-10-10 127 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); 
} 

什么我没有做正确的样本?

谢谢

更新

我使用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 2010-10-10 17:57:34

回答

1

您的应用程序需要user_birthdayemail权限对于这一点,要不然也不会返回信息。你只需要提供一个需要权限的参数,你在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' 
));