2015-07-30 2 views
-2

Я создал кнопку входа в систему Facebook для своего сайта и попытался получить адрес электронной почты пользователя Facebook. В массиве, который я получаю в ответ, нет адреса электронной почты.Получить идентификатор электронной почты Facebook с помощью кнопки входа в facebook

Вот код, я использую:

require_once '../../config.php'; 
// added in v4.0.0 
require_once 'autoload.php'; 
use Facebook\FacebookSession; 
use Facebook\FacebookRedirectLoginHelper; 
use Facebook\FacebookRequest; 
use Facebook\FacebookResponse; 
use Facebook\FacebookSDKException; 
use Facebook\FacebookRequestException; 
use Facebook\FacebookAuthorizationException; 
use Facebook\GraphObject; 
use Facebook\Entities\AccessToken; 
use Facebook\HttpClients\FacebookCurlHttpClient; 
use Facebook\HttpClients\FacebookHttpable; 
// init app with app id and secret 
FacebookSession::setDefaultApplication($appid,$appSecretKey); 
// login helper with redirect_uri 
$helper = new FacebookRedirectLoginHelper(WEBSITE_FRONTEND_URL.'/facebook/fbconfig.php'); 
try 
{ 
    $session = $helper->getSessionFromRedirect(); 

} catch(FacebookRequestException $ex) { 
    //echo " When Facebook returns an error"; 
} catch(Exception $ex) { 
// echo "When validation fails or other local issues"; 
} 
// see if we have a session 
if(isset($session)) 
{ 
    // graph api request for user data 
    $request = new FacebookRequest($session, 'GET', '/me'); 
    print_r($request); 
    $response = $request->execute(); 
    // get response 
    $graphObject = $response->getGraphObject(); 
    print_r($graphObject); 
    echo $graphObject->getProperty('email'); 
} 
else 
{ 
    $loginUrl = $helper->getLoginUrl(array('email')); 
    header("Location: ".$loginUrl); 
} 

Как получить адрес электронной почты, быть в состоянии получить адрес электронной почты?.

+0

Ваше приложение использует API v2.4? В этом случае прочитайте журнал изменений - количество полей, возвращаемых по умолчанию, резко сократилось, и теперь вы должны задать дополнительные поля при создании вашего запроса API. – CBroe

+0

Как проверить, что мое приложение использует API v2.4? –

ответ

1

Если вы используете v2.4 от API Graph, вам необходимо явно указать каждое поле, которое вы хотите вернулись из API:

$request = new FacebookRequest($session, 'GET', '/me?fields=id,name,email'); 

Взгляните на мой ответ здесь:

+0

Нет. Он все еще не возвращает мне адрес электронной почты. Что-нибудь еще, что я могу сделать, чтобы получить электронную почту? –

+0

Вам необходимо запросить разрешение через область «Вход». – Tobi

+0

Я уже добавил область $ loginUrl = $ helper-> getLoginUrl (массив ('email')); Он запрашивает разрешение электронной почты, но не будет возвращать электронную почту в ответ. –

-1
 FB.login(function (response) { 
      if (response.session) { 
       var url = '/me?fields=name,email'; // this is what you want 
       FB.api(url, function (response) { 
        alert(response.name); 
        alert(response.email); 
       }); 
      } 
      else { 
       alert("User did not login successfully"); 
      } 
     }, { scope: 'email' }); /* perms changed to scope */ 

использовать это в качестве URL

var url = '/ me? Fields = name, email';

+0

Спасибо за ответ. Как вы видите, я уже добавил область $ loginUrl = $ helper-> getLoginUrl (массив ('email')); Он запрашивает разрешение электронной почты, но не будет возвращать электронную почту в ответ. –

+0

Могу ли я получить emark через emid через id, поскольку я получаю id в ответ? –

+0

http://stackoverflow.com/questions/15481784/facebook-api-email-permissions –

Смежные вопросы