Не мога да накарам кода си да получи „рождения ден“ на моя тестов акаунт или дори моя собствен (няма успех никъде!), за да отрази, въпреки че от това, което видях, го изисквам правилно и имам правилните разрешения за „user_birthday ".
Но facebook изпраща обратно обект за това поле.
Всички останали полета работят перфектно, както можете да видите на моята резултатна страница.
Съответната част от файла на заявката
login.php
$fb = new Facebook\Facebook([
'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);
Файлът за обратно извикване
login-callback.php
`$fb = new Facebook\Facebook([
'app_id' => 'my_actual_id',
'app_secret' => 'my_actual_secret_code',
'default_graph_version' => 'v2.3',
]);
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $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");`
Получената страница на моя код login-callback.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 [email protected]
object(Facebook\GraphNodes\Birthday)#21 (5) { ["hasDate":"Facebook\GraphNodes\Birthday":private]=> bool(true) ["hasYear":"Facebook\GraphNodes\Birthday":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, което да ми помогне.