我正在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/>");
}
?>
答案 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>