2012-01-10 36 views

Trả lời

8

Bạn không thể làm điều đó

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

email trường chỉ có sẵn cho người dùng kết nối với ứng dụng của bạn và đã đưa ra email mở rộng cho phép

+3

@Mang Jose: nếu mỗi người bạn của bạn được kết nối với ứng dụng của bạn và mỗi người trong số họ đã cấp cho bạn quyền 'email' - thì bạn có thể nhận được thuộc tính 'email' của đối tượng' user' của họ. Tên cho phép mở rộng là (ta-dah) 'email' và bạn có thể lấy chi tiết trên liên kết tôi đã nêu ở trên – zerkms

+1

nhưng không có email nào được liệt kê cho cơ sở Quyền mở rộng trên http://developers.facebook.com/docs/ tham chiếu/api/permissions/ –

+0

@Mang Jose: oops, không phải 'mở rộng', nhưng quyền' người dùng' chung. Bảng đầu tiên – zerkms

1

Nhận thông tin từ các liên kết này:

Procedure

Statckoverflow discussion

Nếu người dùng/bạn bè chưa cấp quyền email ứng dụng của bạn, rất có thể bạn sẽ không thể lấy địa chỉ email. Đối với các trường hợp như vậy, bạn có thể chọn chỉ lọc những người bạn đã cấp quyền cho ứng dụng của mình. Điều này có thể được thực hiện bằng cách sử dụng lĩnh vực 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) 

được cập nhật trả lời:

$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

Không, ứng dụng không thể nhận được email người bạn như đã nêu trong Email Permissions tài liệu. Trích dẫn từ tài liệu:

Lưu ý: Không có cách nào để ứng dụng nhận địa chỉ email cho bạn bè của người dùng.

+1

+1. Một tuyên bố từ chính FB. –

3

Email của người dùng là tài sản được bảo vệ và quyền truy cập vào thông tin đó phải được ứng dụng yêu cầu và cấp bởi người dùng.

Lưu ý: Không có cách nào để ứng dụng nhận địa chỉ email cho bạn bè của người dùng.

1

bạn có quyền truy cập vào danh sách bạn bè của người dùng. Vì những người bạn này có thể chưa ủy quyền cho ứng dụng của bạn, bạn chỉ có thể truy cập một nhóm dữ liệu giới hạn hơn theo mặc định: chỉ tên, ảnh tiểu sử, giới tính, mạng. Hầu hết các phần khác của cấu hình Facebook (ví dụ: sở thích, đăng ký, nhóm) có sẵn thông qua Graph API nếu người dùng đã cấp cho bạn các quyền cụ thể. Điều này áp dụng cho cả thông tin của người dùng cũng như thông tin của bạn bè. thông tin có sẵn tùy thuộc vào cài đặt bảo mật của người dùng.

Các vấn đề liên quan