我一直试图通过Facebook Connect获得Facebook用户的生日,但我还没有成功。相同的代码以前工作过,并且仍然适用于之前制作的其他网站(旧的),但似乎不再起作用。这是代码:
require_once ('./connect/facebook.php');
$facebook = new Facebook("myapi", "mysecret");
$fbuser = $facebook->get_loggedin_user();
if ($fbuser)
{
$_SESSION['custid'] = $fbuser;
$fb_look_fields = array(
'name',
'first_name',
'last_name',
'name',
'timezone',
'name',
'sex',
'birthday',
'birthday_date',
'current_location',
'proxied_email',
'affiliations'
);
try
{
$user_data = $facebook->api_client->users_getInfo($fbuser, $fb_look_fields);
}
catch (Exception $e)
{
echo $e->getMessage();
}
# for birth date
$fb_birthday = $user_data[0]['birthday'];
if (!$fb_birthday)
{
$fql_result_xml = $facebook->api_client->fql_query("SELECT birthday FROM standard_user_info WHERE uid = " . $fbuser);
$fb_birthday = $fql_result_xml['birthday'];
}
echo $fb_birthday;
即使我将生日设置为对所有人可见,生日也始终为空。
Facebook是否再次更改了他们的API /政策?或者我在代码中错过了什么/没有正确地做什么?
答案 0 :(得分:2)
他们已经改变了(再次)。为Connect构建Login按钮时,您可以请求生日权限,例如:
文档说:“一旦用户授权您的网站,您就可以从用户的个人资料中获取这些字段......”
答案 1 :(得分:2)
答案 2 :(得分:1)
我通过离线standard_user_info
查询access_token.
表取得了一些成功但是我找不到日期格式的文档。我得到的日期就像“1999年3月4日”。