i have a big problem with this code. I try to write my first facebook app. But this code cant get email from user, and i dont know why. Can someone help me?
require_once 'phpmailer.php';
require_once 'facebook.php';
error_reporting(0);
//Application Configurations
$app_id = 'MY APP ID';
$app_secret = 'MY SECRET ID';
$site_url = 'MY SITE URL';
// Create our application instance
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie'=>true,
));
$user = $facebook->getUser();
if($user == 0){
$user = $facebook->getUser();
}
if($user){
$user_profile=$facebook->api('/me');
$logoutUrl= $facebook->getLogoutUrl();
if(empty($_POST['send'])){
echo"<form method='POST'>";
echo"Hi ".$user_profile['name']."</br>";
echo"<textarea name='message' rows='6' cols='80'>";
echo"</textarea>";
echo"<input type='submit' name='send' value='send'>";
echo"</form>";
}
if(!empty($_POST['send'])&& empty($_POST['message'])){
echo "Empty message";
}
if(!empty($_POST['send'])){
$mail = new PHPMailer();
$mail->SetFrom($_POST['mail'],$user_profile['name']);
$mail->CharSet="utf-8";
$address="therimsilua@gmail.com";
$mail->AddAddress($address," ");
$mail->Subject="message from facebook";
$wiadomosc='Message from user'.$user_profile['name'].'</br>'.$_POST['message'];
$mail->MsgHTML($message);
if($mail->Send()){
echo "Send to: ".$user_profile['email'];
}
else{
echo "Error:".$mail->ErrorInfo;
}
}
}
else {
$perm = array('scope'=>'email');
$loginUrl =$facebook->getLoginUrl($perm);
}
in App setting i have User & Friend Permissions email , so where is the error ? This app work fine without scope
require_once "facebook.php";
$facebook = new Facebook(array('appId' => '482455065177441', 'secret' => '0e484981225df74f1170c29185aa8690'));
$user_fb = $facebook->getUser();
if($user_fb == 0)
{
$user_fb = $facebook->getUser();
}
if ($user_fb) // Check user's FB user ID has getting or not
{
$user_profile = $facebook->api('/me');
$logoutUrl = $facebook->getLogoutUrl();
echo $user_profile['email'];
echo $user_profile['first_name'];
echo $user_profile['last_name'];
}
else // user's FB user ID has not getting load login url with email permission
{
$perms = array('scope' => 'email');
$loginUrl = $facebook->getLoginUrl($perms);
echo "<script> top.location.href='" . $loginUrl . "'</script>";
}
You are doing it right, but the email will only be displayed for the users who have set their privacy options for their emails to be shown to all, otherwise it wont display you the email of the user.
Facebook would not return the user's email if and only if the user denies u access during authentication. Try to print print_r($user_profile)
out the request facebook api returns. or you can use opauth a php authentication library sleeky and easy to use hope it helps