Как получить идентификатор пользователя facebook из моего приложения?

Я создал приложение facebook и отправил запрос пользователю с помощью кода ниже. Теперь, когда пользователь разрешает мое приложение, мне нужен его идентификатор и адрес электронной почты в моем URL-адресе canvas. Но на этом ниже кода пользователь не переходит на мой URL холста. Итак, пожалуйста, помогите мне решить, как пользователь переходит к моему URL-адресу холста, когда он разрешает мое приложение, и я получаю идентификатор пользователя этого пользователя? Мой код ниже:

require_once 'facebook.php';
$ facebook = новый Facebook (массив (
'appId' => '#######',
'secret' => '###################',
'cookie' => true,));
$ req_perms = "publish_stream, offline_access, user_status, email, read_stream";

$ session = $ facebook-> getSession ();

$ loginUrl = $ facebook-> getLoginUrl (массив ('canvas' => 1, 'fbconnect' => 0, 'req_perms' => $ req_perms));
$ me = null;

if (! $ session) {echo "top.location.href = '$ loginUrl';"; exit;}

еще {

try { $uid = $facebook->getUser(); $me = $facebook->api('/me'); } catch (FacebookApiException $e) { echo "<script type='text/javascript'>top.location.href= '$loginUrl';</script>"; exit;} } 

Поэтому, пожалуйста, помогите мне получить идентификатор пользователя.

заранее спасибо

Риад

Доступ к Facebook и электронной почте для текущего пользователя можно получить через:

 $me['id']; $me['email']; 

Это то, что вам нужно?

Прежде всего, ваш код «плохо» написан. Блокировка в вашем коде «при исполнении» не означает, что пользователь не вошел в систему. Это означает, что что-то пошло не так в вашем блоке try (aka bad Facebook Call).

Теперь для вашего вопроса вам просто нужно поместить это в свой блок try :

 $data = $facebook->api('/me?fields=id,email'); 

ВАЖНАЯ ЗАМЕТКА:
Вы не можете получить реальный адрес электронной почты пользователя, пользователь может не поделиться им с вами, и таким образом Facebook создаст «зеркальное» электронное письмо, чтобы поделиться с вашим приложением.

Я не знаком с php, чтобы прокомментировать приведенный выше код. Однако в целом было бы лучше использовать javascript sdk для входа в систему самостоятельно (столкнулся с той же проблемой в asp.net). Таким образом, после входа пользователя, элемент управления возвращается на ту же страницу, на которой он был запущен. Например:

  <div id="fb-root"></div> <script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script> <script type="text/javascript"> FB.init({ appId: <app_id>, cookie: true, status: true, xfbml: true }); function fblogin() { FB.login(function (response) { //Control comes back here if (response.session) { alert(response.session.access_token); var url = '/me?fields=name,email'; FB.api(url, function (response) { //You are now in the same page with the data you wanted. If necessary redirect. alert(response.name); alert(response.email); }); } else { alert("User did not login successfully"); } }, { perms: 'email' }); } </script> <a href="#" onclick="fblogin(); return false;"><img src="../Images/social_facebook.png" /></a> 

Наконец, я решаю свою проблему, и теперь я могу легко получить идентификатор пользователя и адрес электронной почты facebook и другую соответствующую информацию. Используя этот код, я могу попасть в facebook для аутентификации конкретного пользователя и когда пользователь примет мое приложение, тогда я могу получить его / ее facebook идентификатор пользователя, адрес электронной почты и другую информацию в массив $ user_info. Надеюсь, это поможет вам.

Посмотрите мой код ниже:

 <?php require_once 'facebook.php'; $facebook = new Facebook(array( 'appId' => '########', 'secret' => '##########################', 'cookie' => true, )); $req_perms = "publish_stream,offline_access,user_status,email,read_stream"; $session = $facebook->getSession(); $loginUrl = $facebook->getLoginUrl(array('canvas'=> 1,'fbconnect' => 0,'req_perms' => $req_perms)); $user_info = null; if (!$session) { echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";exit;} else{ try { $user_info = $facebook->api('/me'); } catch (FacebookApiException $e) { echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; exit;} } ?> <!doctype html> <html> <head> </head> <body> <?php $user_name=$user_info['name']; echo "Hi $user_name ! Your Facebook ID is: ".$user_info['id']."<br/>"; echo "Hi $user_name ! Your E-mail Address is: ".$user_info['email']."<br/>"; echo "Thanks for accepting our application."; //print_r($user_info); ?> </body> </html>