如何获取Facebook好友列表的电子邮件地址?

9
有没有人知道如何使用Facebook PHP SDK获取电子邮件地址的好友列表?
6个回答

9

3
如果你的每个朋友都连接到了你的应用程序,并且他们中的每一个都授予了你“电子邮件”权限,那么你就可以获取他们的“用户”对象的“电子邮件”属性。这个扩展权限的名称是(哒哒)“电子邮件”,你可以在我给出的链接上获取详情。 - zerkms
1
但是根据http://developers.facebook.com/docs/reference/api/permissions/,扩展权限的电子邮件未列出。 - Mang Jose
@Mang Jose:糟糕,不是“扩展(extended)”,而是一般的“用户(user)”权限。第一张表。 - zerkms
1
我在Facebook的权限部分没有看到任何直接的声明。您能告诉我这个声明在哪里提到吗? 注意:应用程序无法获取用户朋友的电子邮件地址。 - msmq
@sfarbota 呵呵。嗯,即使“你不能那样做”的部分仍然是正确的,因为你确实不能那样做。 - zerkms
显示剩余3条评论

6

根据Email Permissions文档所述,应用程序无法获得好友的电子邮件地址。以下是该文档中的引用:

注意:应用程序无法获取用户好友的电子邮件地址。


3

用户的电子邮件是受保护的属性,必须通过应用程序进行特定请求并由用户授权才能访问该信息。

注意:应用程序无法获取用户朋友的电子邮件地址。


1
你可以访问用户的好友列表。由于这些朋友可能没有授权您的应用程序,因此默认情况下只能访问更有限的数据:仅有姓名、个人资料图片、性别和网络。 如果用户已经授予了特定权限,那么Facebook资料中的其他大部分内容(例如兴趣、签到、群组)都可以通过Graph API获得。这适用于用户信息以及他/她的好友信息。 信息可根据用户的隐私设置进行访问。

1

1

从以下链接获取信息:

过程

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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接