Facebook getUser()返回0

问题描述:

我正在使用带有Codeigniter的PHP SDK实现Facebook登录。我得到Facebook登录弹出窗口,点击登录,但我无法检索用户的ID - 它总是返回0.Facebook getUser()返回0

我已经将facebook.php和base_facebook.php文件放在我的库文件中,并将其作为Codeigniter中的库遵循教程here

谁能告诉我他们在想什么吗?我使用下面的代码 -

视图 - Facebook登录按钮

<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> 

控制器 - 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; 

如果应用程序域是真正的域名,但网站的网址为localhost ,getUser函数返回0

+0

不正确,如果显示的画布网址为上述工作,即使在本地主机的“http://本地主机/我的伟大,应用程序/”,并在应用程序域“localhost”的 – dendini 2014-02-14 09:41:30

在getUser()是当它真的不应该返回0时,应用程序仍然是沙盒。原来用户不接受请求作为应用程序的开发者。

我遇到了类似的问题。我使用了一个示例项目,并不知道为什么它一直返回0.尝试几乎所有相关链接,但没有解决它。

解决方案是更新示例项目中的Facebook SDK文件。 简单,容易漏诊,

我有同样的问题后,试图找出是什么问题, 我发现,你需要访问令牌来获得用户的ID很长一段时间。 要获得来自signed_request的访问令牌,用户必须先授权(获取权限)您的应用程序。 我希望这会有所帮助

我遇到了类似的问题,下面是可能对您有帮助的解决方案。

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

}

+1

以上代码解释是,如果getUser()返回0,那么我们需要将$ facebook-> getLoginUrl()重定向到用户将接受应用程序并获取权限的页面,然后getUser()将工作,如果用户接受否则您再次得到0 – dendini 2014-02-14 09:39:41