Как получить идентификатор электронной почты пользователей в приложении Facebook с использованием PHP?

Я создал простое приложение Facebook в PHP, которое приветствует пользователя от имени пользователя, я также хочу, чтобы там отображался идентификатор электронной почты. Но я не могу этого сделать. код, который я использую,

require_once('facebook.php'); require_once('config.php'); $facebook = new Facebook(APIKEY, SECRETKEY); $user=$facebook->require_login(); echo $user; // displaying the ID <div style="padding: 10px;" id="greeting"> <fb:if-is-app-user uid="loggedinuser"> <h2>Hi <fb:name firstnameonly="true" uid="loggedinuser" useyou="false"/>! welcome to facebook</h2> <fb:else> <h2>Hi <fb:name firstnameonly="true" uid="loggedinuser" useyou="false"/>! welcome to facebook</h2> </fb:else> </fb:if-user-has-added-app> </div> 

Результат, который я получаю,

 1000002020202020 Hi User! welcome to facebook 

Я хочу, чтобы адрес электронной почты отображался вместе с именем пользователя, я искал много кода, но не получил никакого решения. и если у вас есть хороший сайт для учебников facebook, разместите ссылки тоже.

Вы можете получить адрес электронной почты напрямую, не используя FQL.

 // initialize facebook $facebook = new Facebook(array( 'appId' => APP_ID, 'secret' => APP_SECRET)); $session = $facebook->getSession(); if ($session) { try { $fbme = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); } } else { echo "You are NOT Logged in"; } //getting the login page if not signned in if (!$fbme) { $loginUrl = $facebook->getLoginUrl(array('canvas' => 1, 'fbconnect' => 0, 'req_perms' => 'email,user_birthday,publish_stream', 'next' => CANVAS_PAGE, 'cancel_url' => CANVAS_PAGE )); echo '<fb:redirect url="' . $loginUrl . '" />'; } else { // $fbme is valid ie user can access our app echo "You can use this App"; } // getting the profile data $user_id = $fbme[id]; $name=$fbme['name']; $first_name=$fbme['first_name']; $last_name=$fbme['last_name']; $facebook_url=$fbme['link']; $location=$fbme['location']['name']; $bio_info=$fbme['bio']; $work_array=$fbme['work']; $education_array=$fbme["education"]; $email=$fbme['email']; $date_of_birth=$fbme['birthday']; 

Этот код работал для меня … и я отправляю всю информацию, необходимую с идентификатором электронной почты.

 NOTE: User has to allow us to get their Information during the Approval of Application. 

Вам необходимо просить расширенные разрешения, когда пользователь авторизует ваше приложение, чтобы вы могли получить доступ к электронной почте пользователя.

Вот пример использования нового PHP SDK и Graph API:

 <?php require_once($_SERVER['DOCUMENT_ROOT'] . '/includes/config.php'); // initialize facebook $facebook = new Facebook(array( 'appId' => APP_ID, 'secret' => APP_SECRET)); $user = $facebook->getUser(); $session = $facebook->getSession(); // in case we don't have a valid session, we redirect asking for email extended permissions if ($user == null || $session == null) { $params = array(); $params["canvas"] = "1"; $params["fbconnect"] = "0"; $params["next"] = CANVAS_URL; $params["req_perms"] = "email"; $loginUrl = $facebook->getLoginUrl($params); echo '<fb:redirect url="' . $loginUrl . '"/>'; exit(); } // get user email via the new graph api, using the fql.query method $url = "https://api.facebook.com/method/fql.query"; $url .= "?access_token=" . $session['access_token']; $url .= "&query=SELECT email FROM user WHERE uid={$user}"; $userData = simplexml_load_file($url); $userEmail = $userData->user->email; echo 'The user ID is: ' . $user; echo 'The user name is: <fb:name uid="' . $user . '" />'; echo 'The user email is: ' . $userEmail; 

Спасибо за помощь. Я наконец выясню, как это сделать.

во-первых, мне нужно получить токен доступа, а не пользовательский сеанс, а один для администратора.

Итак, вот код:

 $url = 'https://graph.facebook.com/oauth/access_token'; $ch = curl_init(); $params = array( 'grant_type'=>'client_credentials', 'client_id'=>$appId, 'client_secret'=>$secret, ); $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&'); // set URL and other appropriate options curl_setopt_array($ch, $opts); curl_setopt($ch, CURLOPT_URL, "$url"); curl_setopt($ch, CURLOPT_HEADER, 0); // grab URL and pass it to the browser $adminAccessToken = curl_exec($ch); // close cURL resource, and free up system resources curl_close($ch); 

И тогда я могу использовать API facebook, чтобы получить любого пользователя, который принимает приложение и расширенное разрешение:

 $fql = "select name, hometown_location, sex, pic_square, email from user where uid=1000000001"; $param = array( 'method' => 'fql.query', 'query' => $fql, 'access_token' =>$adminAccessToken , 'callback' => '' ); $fqlResult2 = $facebook->api($param); 

с токеном доступа, я также могу размещать вещи на стене пользователя. 🙂