Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook getUser() returns 0 [duplicate]

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;
like image 691
Tom Avatar asked Dec 29 '11 17:12

Tom


1 Answers

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

}

like image 196
Arun G Avatar answered Oct 22 '22 01:10

Arun G