1

从 Facebook PHP SDK 获取用户的电子邮件 ID

我尝试使用以下代码

第一的

$user_profile = $facebook->api('/me');  // or $facebook->api('/me?fields=email')
print_r($user_profile);

第二

$user = $facebook->getUser();
$url = "https://api.facebook.com/method/fql.query";
    $url .= "?access_token=" . $access_token;
    $url .= "&query=SELECT email FROM user WHERE uid={$user}";
    $userData = simplexml_load_file($url);
    $userEmail = $userData->user->email;
    print_r($userEmail);

第三

    $user = $facebook->getUser();
$fql    =   "select name, hometown_location, sex, pic_square, email from user where uid='$user'";
        $param  =   array(
           'method'     => 'fql.query',
            'query'     => $fql,
            'access_token' =>$access_token ,
          'callback'    => ''
        );

        $fqlResult2   =   $facebook->api($param);

    print_r($fqlResult2);

这些都不会获得登录用户的电子邮件 ID。如何找回它?

4

3 回答 3

2

FBML(这将很快成为历史

<fb:login-button autologoutlink="true" perms="email"></fb:login-button>

PHP

$loginUrl = $facebook->getLoginUrl(
  array(
    'scope' => 'email'
  )
);

JS

FB.login(function(response) {
    if (response.authResponse) {
       // conosle.log('User logged in');
    } else {
       // console.log('User cancelled login or did not fully authorize.');
    }
}, {
    scope: 'email'
});​

开始email使用图形 api

FB.api('/me', function(user) {
    if (user) {
        User.email = user.email;
    }
});​
于 2012-04-19T10:55:24.433 回答
0

您需要有权访问用户的电子邮件地址。因此,您的应用程序必须请求“电子邮件” 权限

这个网站有一些指南如何从用户那里获得这些权限(或者更确切地说是要求他们)。

根据JS SDK 文档,您需要执行以下操作:

FB.login(function(response) {
   // handle the response
}, {scope: 'email,user_likes,...'});
于 2012-04-19T10:51:20.647 回答
0

更改您的代码,如下所示:

$facebook->api('/me?locale=en_US&fields=name,email' );

getLoginUrl( array(
    'scope' => 'email'
));
于 2016-02-15T09:57:48.753 回答