如何申请Facebook App的年龄和用户名?

时间:2012-02-19 11:28:28

标签: php facebook json facebook-graph-api

我正在Facebook’s online documentation for app development的帮助下开发我的第一个Facebook应用程序。

我面临的问题是在验证时我还需要用户的性别和姓名。上面链接中提供的屏幕截图显示我向用户请求的“基本信息”包含它们。 但是我不知道如何检索它们,我猜它们是JSON数组但是我对JSON不是很熟悉所以可能这就是为什么或者我需要额外的权限给它们?

<?php

  $signed_request = $_REQUEST["signed_request"];
  list($encoded_sig, $payload) = explode('.', $signed_request, 2);
  $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
  if (empty($data["user_id"])) {
    echo("<script> top.location.href='" . $auth_url . "'</script>");
  } else {
    echo("<b class=\"welcome\">Welcome " . $data["user_id"] . ",</b><br/>");
  }
?>

2 个答案:

答案 0 :(得分:1)

您的数据来源是已签名的请求,根据documentation,该请求包含有关用户的一组有限属性(列表位于该链接中)。

为了获得有关用户或其朋友的更多数据,您需要提出api请求。 一旦用户授权,您的应用程序就会获得一些信息,例如:

  

当用户允许您在身份验证中访问其基本信息时   对话框,您可以访问他们的用户ID,姓名,个人资料图片,   性别,年龄范围,区域设置,网络,用户ID,朋友列表等   他们公开的其他信息。

  

访问有关用户或其用户的任何其他信息   朋友,您需要询问用户的特定权限。

(在此处阅读更多内容:http://developers.facebook.com/docs/reference/api/permissions/)。

如果您只想要性别,并且姓名向/我发出请求,请在此处说明:http://developers.facebook.com/docs/reference/api/user/,而无需询问任何其他权限。

修改

如果您需要一些代码段,请尝试以下主题:Get user's name from Facebook Graph API

答案 1 :(得分:0)

如果要获取生日数据,则应添加getLoginUrl方法的权限。

print_r($ data)的输出将是Array(基本信息+生日)。您可以使用生日字段和日期函数计算用户的年龄。

有关Facebook permissions的更多信息。

试试这段代码:

<?php
$config= array('appId'=>APP_ID, 'secret'=>APP_SECRET);
$facebook= new Facebook($config);
$user_id= $facebook->getUser();
if( $user_id ){
   try {
      $data= $facebook->api('/me');
          print_r($data);
      }catch( FacebookApiException $e ){
        $user_id = null;
        $e->getType();
        $e->getMessage();
    }
}
if( $user_id ){
    $href= $facebook->getLogoutUrl();
    $text= "LogOut";
}else{
    $permission= array('scope'=>'user_birthday');
    $href= $facebook->getLoginUrl($permission);
    $text= "LogIn";
}
?>
<a href="<?php echo $href; ?>"><?php echo $text; ?></a>