2012-01-10 4 views

ответ

8

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

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

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

+3

@Mang Jose: если каждый ваш друг подключен к вашему приложению, и каждый из них предоставил вам разрешение электронной почты, то вы можете получить свойство 'email' своего объекта' user'. Расширенное имя разрешено (ta-dah) 'email', и вы можете получить информацию о ссылке, которую я дал выше – zerkms

+1

, но нет электронной почты, указанной в базе расширенных разрешений на http://developers.facebook.com/docs/. reference/api/permissions/ –

+0

@Mang Jose: oops, а не 'extended', но общее разрешение пользователя. Первая таблица – zerkms

1

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

Procedure

Statckoverflow discussion

Если пользователь/друг не предоставил вам разрешения на доступ к электронной почте, скорее всего, вы не сможете получить адрес электронной почты. Для таких случаев вы можете выбрать фильтр только для друзей, предоставивших разрешения для вашего приложения. Это можно сделать с помощью поля 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); 
5

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

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

+1

+1. Заявление самого FB. –

3

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

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

1

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

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