2011-12-29 105 views
6

我正在使用帶有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; 

回答

-1

如果應用程序域是真正的域名,但網站的網址爲localhost ,getUser函數返回0

+0

不正確,如果顯示的畫布網址爲上述工作,即使在本地主機的「http://本地主機/我的偉大,應用程序/」,並在應用程序域「localhost」的 – dendini 2014-02-14 09:41:30

0

在getUser()是當它真的不應該返回0時,應用程序仍然是沙盒。原來用戶不接受請求作爲應用程序的開發者。

0

我遇到了類似的問題。我使用了一個示例項目,並不知道爲什麼它一直返回0.嘗試幾乎所有相關鏈接,但沒有解決它。

解決方案是更新示例項目中的Facebook SDK文件。 簡單,容易漏診,

0

我有同樣的問題後,試圖找出是什麼問題, 我發現,你需要訪問令牌來獲得用戶的ID很長一段時間。 要獲得來自signed_request的訪問令牌,用戶必須先授權(獲取權限)您的應用程序。 我希望這會有所幫助

1

我遇到了類似的問題,下面是可能對您有幫助的解決方案。

$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

相關問題