Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I cant get user email address on facebook

Tags:

php

facebook

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="[email protected]";
        $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>";        
}
like image 338
Anamesh Avatar asked Jan 01 '26 04:01

Anamesh


1 Answers

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.

like image 177
Arpit Maheshwari Avatar answered Jan 02 '26 18:01

Arpit Maheshwari



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!