Как я могу получить список адресов электронной почты друзей из Facebook? - PullRequest
9 голосов
/ 10 января 2012

Кто-нибудь знает, как получить список друзей по электронной почте, используя Facebook PHP SDK?

Ответы [ 6 ]

9 голосов
/ 10 января 2012

Вы не можете сделать это

http://developers.facebook.com/docs/reference/api/permissions/

email поле доступно только для пользователей, которые подключились к вашему приложению и дали email расширенное разрешение

6 голосов
/ 16 октября 2013

Нет, приложения не могут получать электронные письма от друзей, как указано в документе Разрешения электронной почты . Цитата из документа:

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

3 голосов
/ 15 января 2014

Электронная почта пользователя является защищенным свойством, и доступ к этой информации должен быть специально запрошен приложением и предоставлен пользователем.

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

1 голос
/ 08 августа 2016

у вас есть доступ к списку друзей пользователя. Поскольку эти друзья, возможно, не авторизовали ваше приложение, по умолчанию вы можете получить доступ только к более ограниченному набору данных: только имя, изображение профиля, пол, сети. Большинство других частей профиля Facebook (например, интересы, регистрации, группы) доступны через Graph API, если пользователь предоставил вам определенные разрешения. Это относится как к информации пользователя, так и к информации его / ее друзей. информация доступна в зависимости от настроек конфиденциальности пользователя.

1 голос
/ 06 декабря 2013

Приложения не могут получить адреса электронной почты для друзей пользователя. Смотри документацию https://developers.facebook.com/docs/reference/login/email-permissions/

1 голос
/ 10 января 2012

Получить информацию по этим ссылкам:

Процедура

Обсуждение Statckoverflow

Если пользователь / друг не далразрешения для электронной почты вашего приложения, скорее всего, вы не сможете получить адрес электронной почты.Для подобных случаев вы можете выбрать фильтрацию только тех друзей, которые дали разрешения вашему приложению.Это можно сделать с помощью поля is_app_user:

SELECT uid, first_name, last_name FROM user 
  WHERE is_app_user = 1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = $userId)

Получить обновленный ответ:

$appId     = 'YOUR_APP_ID';
$appSecret = 'YOUR_APP_SECRET';

$userId          = 'A_FACEBOOK_USER_ID';
$userAccessToken = 'THE_FACEBOOK_USER_ACCESS_TOKEN';

$client = new Facebook(array('appId' => $appId, 'secret' => $appSecret));

// get all friends who has given our app permissions to access their data
$fql = "SELECT uid, first_name, last_name, email FROM user "
     . "WHERE is_app_user = 1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = $userId)";
$friends = $client->api(array(
  'method'       => 'fql.query',
  'access_token' => $userAccessToken,
  'query'        => $fql,
));

// make an array of all friend ids
$friendIds = array();
foreach ($friends as $friend) {
  $friendIds[] = $friend['uid'];
}

// get info of all the friends without using any access token
$friendIds = implode(',', $friendIds);
$fql = "SELECT uid, first_name, last_name, email FROM user WHERE uid IN ($friendIds)";
$friends = $client->api(array(
  'method' => 'fql.query',
  'query'  => $fql,
  // don't use an access token
));

// we should now have a list of friend infos with their email addresses
print_r($friends);
...