【问题标题】:How to request Age and User Name for Facebook App?如何请求 Facebook 应用的年龄和用户名?
【发布时间】:2012-02-19 11:28:27
【问题描述】:

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/>");
  }
?>

【问题讨论】:

  • 上次我检查你不能相信生日字段...太多不同的组合。它可能有年份,也可能没有......我认为日/月的顺序也可以根据语言/国家/地区而变化,所以这不是一件容易的事......

标签: php facebook json facebook-graph-api


【解决方案1】:

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

为了获取有关用户或他的朋友的更多数据,您需要发出 api 请求。 用户授权后,某些信息会授予您的应用程序,例如:

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

和:

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

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

如果您只需要性别和姓名,请向 /me 提出请求,如下所示:http://developers.facebook.com/docs/reference/api/user/,无需请求任何其他权限。

编辑

如果你想要一些代码 sn-ps 试试这个帖子:Get user's name from Facebook Graph API

【讨论】:

  • 正如你所说,当用户在没有任何额外权限的情况下授权应用程序时,默认情况下会获取用户 ID、姓名、个人资料图片、性别、年龄范围等......在我的情况下,用户已授权我的应用程序和该应用程序可以检索他的 user_id,但我很困惑如何获取用户的其他信息,例如姓名和性别等?
  • 您发出图形 api 请求,例如获取用户名:echo json_decode(file_get_contents('graph.facebook.com/1157251270'))->name; 在我链接到的线程中有更多示例我的原帖
【解决方案2】:

如果你想获取生日数据,你应该在 getLoginUrl 方法上添加权限。

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

关于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>

【讨论】:

  • 不要认为这是问题的正确答案,因为developers.facebook.com/docs/authentication/permissions 建议无需额外许可即可获取年龄范围。默认情况下,这包括 User 对象的某些属性,例如 id、姓名、图片、性别、他们的语言环境和他们的年龄范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多