2015-08-13 3 views
-1

Я пытаюсь получить адрес электронной почты от входа в facebok.Получить адрес электронной почты, используя Facebook login

Пожалуйста, смотрите код

<?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($fb_app,$fb_key); 
    // login helper with redirect_uri 
     $helper = new FacebookRedirectLoginHelper('http://my-site.com/fbconfig.php'); 
    try { 
     $session = $helper->getSessionFromRedirect(); 
    } catch(FacebookRequestException $ex) { 
     // When Facebook returns an error 
    } catch(Exception $ex) { 
     // 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'); 
     $response = $request->execute(); 
     // get response 
     $graphObject = $response->getGraphObject(); 
      $fbid = $graphObject->getProperty('id');    // To Get Facebook ID 
      $fbfullname = $graphObject->getProperty('first_name'); 
      $femail = $graphObject->getProperty('email'); // To Get Facebook email ID 
     /* ---- Session Variables -----*/ 



    } else { 
     $loginUrl = $helper->getLoginUrl(); 
    header("Location: index.html"); 
    } 

?> 

все, кажется, работает нормально, за исключением электронной почты.

Я использую строку $femail = $graphObject->getProperty('email');, чтобы получить адрес электронной почты пользователя.

Может кто-нибудь указать мне, как исправить эту проблему?

+0

https://developers.facebook.com/docs/apps/changelog#v2_4_changes, "Declarative Fields" – CBroe

+0

@CBroe, если он работает для поля первого имени, это означает, что проблема не связана с декларативными полями (возможно, старой версии SDK, которая по умолчанию использует версию Graph API для более низкой). Поле электронной почты должно быть разрешено пользователем с его выделенным разрешением, но, я думаю, вы уже знаете, что :) –

ответ

1

При получении URL-адреса входа вы должны запросить разрешение email (параметр области). Пользователь должен предоставить вам доступ к его/ее адресу электронной почты.

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