Я использую facebook sdk v4, и я не могу получить EMAIL ADDRESS. Вот мой код. Я искал каждую ссылку в Интернете и пробовал все. Также попробовали разные скрипты, но все равно я получаю нулевую электронную почту. Вот мой код.
/* INCLUSION OF LIBRARY FILEs*/ require_once( 'lib/Facebook/FacebookSession.php'); require_once( 'lib/Facebook/FacebookRequest.php' ); require_once( 'lib/Facebook/FacebookResponse.php' ); require_once( 'lib/Facebook/FacebookSDKException.php' ); require_once( 'lib/Facebook/FacebookRequestException.php' ); require_once( 'lib/Facebook/FacebookRedirectLoginHelper.php'); require_once( 'lib/Facebook/FacebookAuthorizationException.php' ); require_once( 'lib/Facebook/GraphObject.php' ); require_once( 'lib/Facebook/GraphUser.php' ); require_once( 'lib/Facebook/GraphSessionInfo.php' ); require_once( 'lib/Facebook/Entities/AccessToken.php'); require_once( 'lib/Facebook/HttpClients/FacebookCurl.php' ); require_once( 'lib/Facebook/HttpClients/FacebookHttpable.php'); require_once( 'lib/Facebook/HttpClients/FacebookCurlHttpClient.php'); /* USE NAMESPACES */ 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\GraphUser; use Facebook\GraphSessionInfo; use Facebook\FacebookHttpable; use Facebook\FacebookCurlHttpClient; use Facebook\FacebookCurl; /*PROCESS*/ //1.Stat Session session_start(); //check if users wants to logout if($_REQUEST['logout']==1){ unset($_SESSION['fb_token']); } //2.Use app id,secret and redirect url $app_id = 'xxxxxxxxxx'; $app_secret = 'xxxxxxxxxxxxxxx'; $redirect_url='http://someurl.com/'; //3.Initialize application, create helper object and get fb sess FacebookSession::setDefaultApplication($app_id,$app_secret); $helper = new FacebookRedirectLoginHelper($redirect_url); $sess = $helper->getSessionFromRedirect(); //check if facebook session exists if(isset($_SESSION['fb_token'])){ $sess = new FacebookSession($_SESSION['fb_token']); } //logout $logout = 'http://dryvr.co/fb/?logout=1'; //4. if fb sess exists echo name if(isset($sess)){ //store the token in the php session $_SESSION['fb_token']=$sess->getToken(); //create request object,execute and capture response $request = new FacebookRequest($sess,'GET','/me'); // from response get graph object $response = $request->execute(); $graph = $response->getGraphObject(GraphUser::classname()); // use graph object methods to get user details $name = $graph->getName(); $id = $graph->getId(); $image = 'https://graph.facebook.com/'.$id.'/picture?width=300'; $email = $graph->getProperty('email'); echo "hi $name <br>"; echo "your email is $email <br><Br>"; echo "<img src='$image' /><br><br>"; echo "<a href='".$logout."'><button>Logout</button></a>"; }else{ //else echo login echo '<a href="'.$helper->getLoginUrl(array('email')).'" >Login with facebook</a>'; }
Я использовал $email = $graph->getProperty('email');
но все же я не могу получить доступ к адресу электронной почты, и он возвращает пустое электронное письмо. Что мне делать? Мысли?
Взгляните на мой ответ здесь:
Вам нужно указать каждое поле, которое вы хотите вернуть из API диаграмм, начиная с версии 2.2, например
$request = new FacebookRequest($sess,'GET','/me?fields=id,name,email');
Это все в документах Facebook.