Я новичок в интеграции 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);
}
}
}
Помогите мне, пожалуйста.
Спасибо
Единственный способ получить адрес электронной почты пользователей — это запросить расширенные разрешения для поля электронной почты. Пользователь должен разрешить вам видеть это, и вы не можете получить адреса электронной почты друзей пользователя.
http://developers.facebook.com/docs/authentication/permissions
Вы можете сделать это, если вы используете Facebook connect, передавая scope = email в строке get вашего звонка в Auth Dialog.
Я бы порекомендовал использовать SDK вместо file_get_contents, поскольку это значительно упрощает выполнение аутентификации Oauth.
В Facebook Graph API v2.4 (выпущено 2015/7/9) поле электронной почты не включено по умолчанию, но нам нужно явно указать поле для извлечения.
Существует обходной путь для кода 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’));
Я новичок в интеграции 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);
}
}
}
Помогите мне, пожалуйста.
Спасибо
Единственный способ получить адрес электронной почты пользователей — это запросить расширенные разрешения для поля электронной почты. Пользователь должен разрешить вам видеть это, и вы не можете получить адреса электронной почты друзей пользователя.
http://developers.facebook.com/docs/authentication/permissions
Вы можете сделать это, если вы используете Facebook connect, передавая scope = email в строке get вашего звонка в Auth Dialog.
Я бы порекомендовал использовать SDK вместо file_get_contents, поскольку это значительно упрощает выполнение аутентификации Oauth.
В Facebook Graph API v2.4 (выпущено 2015/7/9) поле электронной почты не включено по умолчанию, но нам нужно явно указать поле для извлечения.
Существует обходной путь для кода 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’));