1

我使用带有 symfony 的 facebook sdk api,在下面的 $user_profile 数组中,他可以检索除电子邮件和生日之外的所有信息。

        require 'facebook.php';
        $app_id = sfConfig::get('app_facebook_app_id');
        $app_secret = sfConfig::get('app_facebook_secret_key');
        $facebook = new Facebook(array(
            'appId' => $app_id,
            'secret' => $app_secret,
            ));
        $user = $facebook->getUser();
        if ($user) {
              try {
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
        }
       if ($user) {        
           $location= $user_profile['location']['name'];
           $gender = $user_profile['gender'];
            $user_info = array(
                'uid' => $user_profile['id'],
                'first_name' => $user_profile['first_name'],
                'last_name' => $user_profile['last_name'],
                'email' => $user_profile['email'],
                'birthday' => $user_profile['birthday'],
                'gender' => $user_profile['gender'],
            );

当我使用print_r($user_profile)它时返回:

Array ( 
  [uid] => 100004246655890 
  [first_name] => Ala 
  [last_name] => Hamad 
  [email] => 
  [birthday] => 
  [gender] => male 
)

电子邮件和生日为空。

4

3 回答 3

3

您的代码中没有任何地方显示您正在请求访问用户电子邮件地址或生日所需的权限

检查权限文档并确保您在身份验证代码中请求emailuser_birthday权限。

于 2012-09-02T16:09:23.010 回答
0

如果您没有收到这些信息,原因之一是用户配置禁止共享它们,而 Facebook 没有发送警告。

因为某些用户在配置中禁止共享电子邮件或其他信息。

于 2012-09-02T13:21:09.363 回答
0

我搜索了如何在代码中编写它,然后我发现我必须在登录 url 的范围内请求电子邮件权限:

$params = array(
  'redirect_uri' => url_for('sfGuardAuth/loginWithFB', true),'scope' => 'email,user_birthday,user_location'
);
  $loginUrl = $facebook->getLoginUrl($params);
于 2012-09-03T06:52:13.687 回答