Facebook Graph API,如何获取用户电子邮件?

2022-08-30 07:57:37

我正在使用图形 API,但我不知道如何获取登录用户的电子邮件地址。

Graph 简介指出“Graph API 可以提供对网站注册表单中通常请求的所有基本帐户注册数据的访问权限,包括姓名、电子邮件地址、个人资料图片和生日”

一切都很好,但是我如何访问这些信息?

这是我到目前为止所拥有的:

$json = $facebook->api('/me');

$first = $json['first_name']; // gets first name
$last = $json['last_name'];

答案 1

获取用户电子邮件地址的唯一方法是请求对电子邮件字段的扩展权限。用户必须允许您查看此内容,并且您无法获取用户朋友的电子邮件地址。

http://developers.facebook.com/docs/authentication/permissions

如果您使用的是 Facebook Connect,则可以通过在调用的 get 字符串中传递 scope=email 到身份验证对话框来执行此操作。

我建议使用SDK而不是file_get_contents因为它使执行Oauth身份验证变得更加容易。


答案 2
// Facebook SDK v5 for PHP
// https://developers.facebook.com/docs/php/gettingstarted/5.0.0

$fb = new Facebook\Facebook([
  'app_id' => '{app-id}',
  'app_secret' => '{app-secret}',
  'default_graph_version' => 'v2.4',
]);

$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
$response = $fb->get('/me?locale=en_US&fields=name,email');
$userNode = $response->getGraphUser();
var_dump(
    $userNode->getField('email'), $userNode['email']
);

推荐