Тема: авторизація через facebook
Привіт. Хочу реалізувати на сайті авторизацію через facebook. Моє питання в тому що я отримую при успішному вході через facebook тільки ид та логін, а інші параметрни такі як почта не отримую. Від чого це залежить?
Ось робочий код: (моливо комусь знадобиться)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<title>Аутентификация через Facebook</title>
</head>
<body>
<?php
$client_id = '**'; // Client ID
$client_secret = '**'; // Client secret
$redirect_uri = '**'; // Redirect URIs
$url = 'https://www.facebook.com/dialog/oauth';
$params = array(
'client_id' => $client_id,
'redirect_uri' => $redirect_uri,
'response_type' => 'code',
'scope' => 'email'
);
echo $link = '<p><a href="' . $url . '?' . urldecode(http_build_query($params)) . '">Аутентификация через Facebook</a></p>';
if (isset($_GET['code'])) {
$result = false;
$params = array(
'client_id' => $client_id,
'redirect_uri' => $redirect_uri,
'client_secret' => $client_secret,
'code' => $_GET['code']
);
$url = 'https://graph.facebook.com/v2.9/oauth/access_token';
$tokenInfo = null;
$tokenInfo = file_get_contents($url . '?' . http_build_query($params));
$var = json_decode($tokenInfo, true);
if (count($tokenInfo) > 0 && isset($var['access_token'])) {
$params = array('access_token' => $var['access_token']);
$userInfo = json_decode(file_get_contents('https://graph.facebook.com/me' . '?' . urldecode(http_build_query($params))), true);
if (isset($userInfo['id'])) {
$userInfo = $userInfo;
var_dump($userInfo);
}
} else {
//echo "<br>error<br>";
}
}
?>
</body>
</html>