CodeIgniter Auth2 Library для Facebook Graph API: не получается адрес электронной почты

Я новичок в интеграции Facebook с codeigniter.

Я выполнил все настройки библиотеки codeigniter oauth (0.3.1) и oauth2 (0.3.1) для функции «Войти через Facebook».

Но я не получаю адрес электронной почты пользователя fb.

Я получаю только имя и идентификатор из Facebook.

Я не могу понять проблему.

Я использую следующий код CI

 public function oauth2($providername)
{

$key = $this->config->item('key',$providername);
$secret = $this->config->item('secret',$providername);

$this->load->helper('url_helper');

$this->load->spark('oauth2/0.3.1');

$provider = $this->oauth2->provider($providername, array(
'id' => $key,
'secret' => $secret,
));
//var_dump($provider);


if ( ! $this->input->get('code'))
{

if($providername =='facebook'){
$url = 'http://example.com'.$provider->redirect_uri;
redirect($url);
}
// By sending no options it'll come back here
$provider->authorize();
}
else
{
// Howzit?
//  echo "in else";die;
try
{
$token = $provider->access($_GET['code']);
$user = $provider->get_user_info($token);
print_r($user);die;
$this->saveData($providername,$token,$user);

}

catch (OAuth2_Exception $e)
{
show_error('That didnt work: '.$e);
}

}
}

Помогите мне, пожалуйста.

Спасибо

0

Решение

Единственный способ получить адрес электронной почты пользователей — это запросить расширенные разрешения для поля электронной почты. Пользователь должен разрешить вам видеть это, и вы не можете получить адреса электронной почты друзей пользователя.

http://developers.facebook.com/docs/authentication/permissions

Вы можете сделать это, если вы используете Facebook connect, передавая scope = email в строке get вашего звонка в Auth Dialog.

Я бы порекомендовал использовать SDK вместо file_get_contents, поскольку это значительно упрощает выполнение аутентификации Oauth.

1

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

В Facebook Graph API v2.4 (выпущено 2015/7/9) поле электронной почты не включено по умолчанию, но нам нужно явно указать поле для извлечения.

Представляем Graph API v2.4

Существует обходной путь для кода igniter-oauth2, как показано ниже.

Обновление полей провайдера Facebook # 65

Я знаю, что это устарело, но у меня есть небольшое исправление в провайдере Facebook
(Провайдер / Facebook.php)

Строка 28. Изменение: $ url =
https://graph.facebook.com/me?».Http_build_query (массив (
‘access_token’ => $ token-> access_token));

На это: $ url =
https://graph.facebook.com/me?».Http_build_query (массив (
‘access_token’ => $ token-> access_token, ‘fields’ =>
‘id, name, email, first_name, last_name’));

1

Я новичок в интеграции Facebook с codeigniter.

Я выполнил все настройки библиотеки codeigniter oauth (0.3.1) и oauth2 (0.3.1) для функции «Войти через Facebook».

Но я не получаю адрес электронной почты пользователя fb.

Я получаю только имя и идентификатор из Facebook.

Я не могу понять проблему.

Я использую следующий код CI

 public function oauth2($providername)
{

$key = $this->config->item('key',$providername);
$secret = $this->config->item('secret',$providername);

$this->load->helper('url_helper');

$this->load->spark('oauth2/0.3.1');

$provider = $this->oauth2->provider($providername, array(
'id' => $key,
'secret' => $secret,
));
//var_dump($provider);


if ( ! $this->input->get('code'))
{

if($providername =='facebook'){
$url = 'http://example.com'.$provider->redirect_uri;
redirect($url);
}
// By sending no options it'll come back here
$provider->authorize();
}
else
{
// Howzit?
//  echo "in else";die;
try
{
$token = $provider->access($_GET['code']);
$user = $provider->get_user_info($token);
print_r($user);die;
$this->saveData($providername,$token,$user);

}

catch (OAuth2_Exception $e)
{
show_error('That didnt work: '.$e);
}

}
}

Помогите мне, пожалуйста.

Спасибо

0

Единственный способ получить адрес электронной почты пользователей — это запросить расширенные разрешения для поля электронной почты. Пользователь должен разрешить вам видеть это, и вы не можете получить адреса электронной почты друзей пользователя.

http://developers.facebook.com/docs/authentication/permissions

Вы можете сделать это, если вы используете Facebook connect, передавая scope = email в строке get вашего звонка в Auth Dialog.

Я бы порекомендовал использовать SDK вместо file_get_contents, поскольку это значительно упрощает выполнение аутентификации Oauth.

1

В Facebook Graph API v2.4 (выпущено 2015/7/9) поле электронной почты не включено по умолчанию, но нам нужно явно указать поле для извлечения.

Представляем Graph API v2.4

Существует обходной путь для кода igniter-oauth2, как показано ниже.

Обновление полей провайдера Facebook # 65

Я знаю, что это устарело, но у меня есть небольшое исправление в провайдере Facebook
(Провайдер / Facebook.php)

Строка 28. Изменение: $ url =
https://graph.facebook.com/me?».Http_build_query (массив (
‘access_token’ => $ token-> access_token));

На это: $ url =
https://graph.facebook.com/me?».Http_build_query (массив (
‘access_token’ => $ token-> access_token, ‘fields’ =>
‘id, name, email, first_name, last_name’));

active «data-shortcut =» A
самый старый «data-shortcut =» O
голосует «data-shortcut =» V
1
По вопросам рекламы [email protected]