有没有人知道如何使用Facebook PHP SDK获取电子邮件地址的好友列表?
你不能这样做
http://developers.facebook.com/docs/reference/api/permissions/
email
字段仅适用于已连接到您的应用程序并已授予email
扩展权限的用户。
用户的电子邮件是受保护的属性,必须通过应用程序进行特定请求并由用户授权才能访问该信息。
注意:应用程序无法获取用户朋友的电子邮件地址。
应用程序无法获取用户朋友的电子邮件地址。请参阅文档https://developers.facebook.com/docs/reference/login/email-permissions/。
从以下链接获取信息:
如果用户/朋友没有授予您的应用程序电子邮件权限,则很可能无法获取电子邮件地址。 对于这样的情况,您可以选择仅过滤已授予您的应用程序权限的朋友。 这可以使用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);