有谁知道如何使用 Facebook PHP SDK 获取电子邮件地址的朋友列表?
6 回答
你不能这样做
http://developers.facebook.com/docs/reference/api/permissions/
email
该字段仅适用于连接到您的应用程序并已授予email
扩展权限的用户
不,应用程序无法获取电子邮件权限文档中所述的朋友电子邮件。从文件中引用:
注意:应用程序无法获取用户朋友的电子邮件地址。
用户的电子邮件是受保护的财产,必须由应用特别请求并由用户授予对该信息的访问权限。
注意:应用程序无法获取用户朋友的电子邮件地址。
从此链接获取信息:
如果用户/朋友没有授予您的应用电子邮件权限,您可能无法获取电子邮件地址。对于此类情况,您可以选择仅过滤已授予您应用权限的朋友。这可以使用 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);
应用程序无法获取用户朋友的电子邮件地址。请参阅文档 https://developers.facebook.com/docs/reference/login/email-permissions/
您可以访问用户的好友列表。由于这些朋友可能没有授权您的应用程序,因此默认情况下您只能访问一组更有限的数据:只有姓名、头像、性别、网络。如果用户授予您特定权限,则 Facebook 个人资料的大多数其他部分(例如兴趣、签到、组)都可以通过 Graph API 获得。这适用于用户的信息以及他/她朋友的信息。信息是否可用取决于用户的隐私设置。