Не удалось сохранить EMail и Image FB OAuth

Я использую FB PHP SDK 4.2, чтобы предоставить пользователям доступ через логин FB. Все просто отлично работает, кроме двух вопросов:

  1. Я не получаю никакой почты, чтобы сохранить ее в БД.
  2. Я не получаю никакого изображения пользователя.

Имя пользователя и социальный идентификатор FB, я могу сохранить в БД.

Ниже необходим код:

FacebookSession::setDefaultApplication(FB_APP_ID, FB_APP_SECRET);
$helper = new FacebookRedirectLoginHelper(FB_REDIRECT_URI);

if(isset($_GET['type']) && $_GET['type'] == 'facebook' ){
$fb_url = $helper->getLoginUrl(array('email'));
header('Location: ' . $fb_url);
}

$session = $helper->getSessionFromRedirect();

if(isset($_SESSION['token'])){
$session = new FacebookSession($_SESSION['token']);
try{
$session->validate(FB_APP_ID, FB_APP_SECRET);
}catch(FacebookAuthorizationException $e){
echo $e->getMessage();
}
}

$data = array();

if(isset($session)){
$_SESSION['token'] = $session->getToken();
$request = new FacebookRequest($session, 'GET', '/me');
$response = $request->execute();
$graph = $response->getGraphObject(GraphUser::className());

$data = $graph->asArray();
$id = $graph->getId();
$image = "https://graph.facebook.com/".$id."/picture?width=100";
$data['image'] = $image;
if($user_obj->fb_login($data)){header('Location: ../');}
else{header('Location: ../');}
}

FB Логин функция используется для сохранения данных в базе данных

1

Решение

Чтобы получить адрес электронной почты пользователя, вошедшего в систему в данный момент, пользователь должен предоставить вашему приложению email разрешение. Только тогда вы сможете получить его. Вы можете прочитать больше о разрешениях Вот.

Также в v2.4 вы получите только минимальный набор полей, для email поле необходимо указать явно в вызове API.

В прошлом ответы от вызовов API API возвращали набор значений по умолчанию
поля. Для того, чтобы уменьшить размер полезной нагрузки и улучшить время ожидания на мобильном телефоне
сетей мы сократили количество полей по умолчанию, возвращаемых для
большинство вызовов Graph API. В v2.4 вам нужно будет декларативно перечислить
поля ответа для ваших звонков.

Так что в v2.4 вам нужно будет явно указать поля. например

https://graph.facebook.com/me?fields=name,email&access_token=<user-access-token>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]