Получить Facebook birthday через PHP 5.0 SDK
Я не могу получить свой код, чтобы получить "День Рождения" моей тестовой учетной записи или даже мой собственный (нигде нет успеха!) Эхо, хотя из того, что я видел, я запрашиваю его правильно, и у меня есть соответствующие разрешения для "user_birthday".
Но facebook отправляет обратно объект для этого поля.Все остальные поля работают отлично, как вы можете видеть на моей странице результатов.
Соответствующая часть файла запроса
Вход.php
$fb = new FacebookFacebook([
'app_id' => 'my_actual_app_id',
'app_secret' => 'my_actual_secret_code',
'default_graph_version' => 'v2.3',
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email', 'user_birthday'];
$loginUrl = $helper->getLoginUrl('my_actual_url', $permissions);
Обратный вызов файл
Вход-обратный вызов.php
`$fb = new FacebookFacebook([
'app_id' => 'my_actual_id',
'app_secret' => 'my_actual_secret_code',
'default_graph_version' => 'v2.3',
]);
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(FacebookExceptionsFacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if (isset($accessToken)) {
// Logged in!
// OAuth 2.0 client handler
echo "<br><br><br> Ok 1 <br>";
$oAuth2Client = $fb->getOAuth2Client();
echo "Ok 2 <br>";
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken(strval($accessToken));
echo "Ok 3 <br>";
$_SESSION['login'] = $longLivedAccessToken;
echo "Ok 4 <br>";
$fb->setDefaultAccessToken($longLivedAccessToken);
$response = $fb->get('/me?locale=en_US&fields=id,last_name,first_name,email,birthday');
//$profile = $response->getGraphNode()->asArray();
echo "Ok 5 <br>";
// get response
echo "Ok 6 <br>";
$node = $response->getGraphNode();
echo "Ok 7 <br>";
$fuid = $node->getField('id'); // To Get Facebook ID
echo "Ok 8 $fuid <br>";
$fblastname = $node->getField('last_name');
echo "Ok 9 $fblastname <br>";
$fbfirstname = $node->getField('first_name');// To Get Facebook first name
echo "Ok 10 $fbfirstname <br>";
$femail = $node->getField('email'); // To Get Facebook email ID
echo "Ok 11 $femail <br>";
$fbirthday = $node->getField('birthday');
echo "<br>";
var_dump($fbirthday);
echo "OK 12 $fbirthday <br>";
/* ---- Session Variables -----*/
$_SESSION['FBID'] = $fuid;
$_SESSION['LASTNAME'] = $fblastname;
$_SESSION['FIRSTNAME'] = $fbfirstname;
$_SESSION['EMAIL'] = $femail;
$test = "perfect";
// = Db::getInstance()->checkuser($fuid,$fblastname,$fbfirstname,$femail);
echo "<br><br><br> Ok 13 $test : Wait for refresh <br>";
// Now you can redirect to another page and use the
// access token from $_SESSION['facebook_access_token']
}
//header ( "refresh:15; url=index.php?action=map");`
Результирующая страница моего логина-обратный вызов.php-код
`Ok 1
Ok 2
Ok 3
Ok 4
Ok 5
Ok 6
Ok 7
Ok 8 104975603177961
Ok 9 Teck
Ok 10 Pierre
Ok 11 myemail@gmail.com
object(FacebookGraphNodesBirthday)#21 (5) { ["hasDate":"FacebookGraphNodesBirthday":private]=> bool(true) ["hasYear":"FacebookGraphNodesBirthday":private]=> bool(true) ["date"]=> string(26) "1955-05-17 00:00:00.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(12) "Europe/Paris" }`
Я попытался преобразовать его в массив и попросил $array_var ['birthday'], но это дало тот же результат...(это работает со всеми другими полями, хотя)
Есть какой-то способ получить информацию о моем дне рождения, в то время как она есть, но я не нашел ничего в документах facebook, чтобы помочь мне.