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());

}

Share:
22,138
Tom
Author by

Tom

Updated on April 19, 2020

Comments

  • Tom
    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
    dendini about 10 years
    The 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
    dendini about 10 years
    not correct, the above works even under localhost if you indicate canvas url as "localhost/my-great-app" and under app domains "localhost"