Facebook getUser() returns 0
22,138
I was stuck up with similar issue, here is the solution that may help you.
$facebook = new Facebook(array(
'appId' => 'xxxx',
'secret' => 'xxxxx',
"redirect_uri" => "set the uri to point to the same page"
));
$user = $facebook->getUser();
if($user)
{
//your task
} else {
header('location:'. $facebook->getLoginUrl());
}
$user = $facebook->getUser();
if($user)
{
//your task
} else {
header('location:'. $facebook->getLoginUrl());
}
Author by
Tom
Updated on April 19, 2020Comments
-
Tom about 4 years
I am implementing Facebook login using the PHP SDK with Codeigniter. I get the Facebook login popup, hit login, but I am unable to retrieve the user's id - it always returns 0.
I have put the facebook.php and base_facebook.php files in my libraries file and included it as a library in Codeigniter following a tutorial here.
Can anyone tell me what they think is going on? I am using the following code -
View - Facebook login button
<div id="fb-root"></div> <script> window.fbAsyncInit = function() { FB.init({ appId : '<?php echo $this->config->item('facebook_app_id'); ?>', status : true, cookie : true, xfbml : true, oauth : true, }); FB.Event.subscribe('auth.login', function() { window.location='<?php echo base_url(); ?>auth_other/fb_signin/'; }); }; (function(d){ var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} js = d.createElement('script'); js.id = id; js.async = true; js.src = "//connect.facebook.net/en_US/all.js"; d.getElementsByTagName('head')[0].appendChild(js); }(document)); </script> <div class="fb-login-button">Login with Facebook</div>
Controller - auth_other/fb_signin
function fb_signin() { $fb_user = null; $fb_config = array( 'appId' => $this->config->item('facebook_app_id'), 'secret' => $this->config->item('facebook_app_secret') ); $this->load->library('facebook',$fb_config); $fb_user = $this->facebook->getUser(); echo $fb_user;
-
dendini about 10 yearsThe above code explanation is that if getUser() returns a 0 then we need to redirect with $facebook->getLoginUrl() to a page where the user will accept the application and get permissions, then getUser() will work if the user accepts otherwise you'll get 0 again.ù
-
dendini about 10 yearsnot correct, the above works even under localhost if you indicate canvas url as "localhost/my-great-app" and under app domains "localhost"