我使用带有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
)
电子邮件和生日空。
答案 0 :(得分:3)
您的代码中没有任何地方显示您正在请求访问用户电子邮件地址或生日所需的Permission
检查权限文档,确保您在Authentication代码中请求email
和user_birthday
权限。
答案 1 :(得分:0)
如果您没有收到这些信息,原因之一是因为用户配置禁止共享这些信息而且Facebook不发送警告。
由于某些用户在配置中禁止共享电子邮件或其他信息。
答案 2 :(得分:0)
我搜索了如何在代码中编写代码,然后我发现我必须在登录网址范围内请求电子邮件权限:
$params = array(
'redirect_uri' => url_for('sfGuardAuth/loginWithFB', true),'scope' => 'email,user_birthday,user_location'
);
$loginUrl = $facebook->getLoginUrl($params);