2011-12-29 3 views
6

Codeigniter가있는 PHP SDK를 사용하여 Facebook 로그인을 구현 중입니다. 페이스 북의 로그인 팝업이 뜨고 로그인을합니다. 사용자의 ID를 검색 할 수 없습니다. 항상 0을 반환합니다.Facebook getUser()가 0을 반환합니다.

내 라이브러리 파일에 facebook.php 및 base_facebook.php 파일을 넣었습니다. 튜토리얼 here에 따라 Codeigniter의 라이브러리

아무도 내 생각을 말할 수 있습니까?

보기 - -

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

실제 도메인하지만, 사이트 URL은 로컬 호스트는 응용 프로그램 도메인이 경우 auth_other/fb_signin -

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

컨트롤러 페이스 북 로그인 버튼 다음 코드를 사용하고 , getUser 함수는 0을 반환합니다.

+0

정확하지, 위에서 심지어 로컬 호스트에서 작동에 "http : // localhost를/내 - 큰 - 응용 프로그램 /"와 – dendini

0

getUser()가 실제로는 안되었을 때 0을 반환하고, 응용 프로그램은 여전히 ​​샌드 박싱되었습니다. 사용자가 응용 프로그램의 개발자가되는 요청을 수락하지 않았 음을 나타냅니다.

0

비슷한 문제가 발생했습니다. 예제 프로젝트를 사용했는데 왜 0을 계속 반환하는지 알 수 없었습니다. 거의 모든 관련 링크를 시도했지만 아무도이 문제를 해결하지 못했습니다.

해결책은 예제 프로젝트에서 Facebook의 SDK 파일을 업데이트하는 것이 었습니다. 간단하고 쉽게 놓친

0

나는 문제가 무엇인지 알아 내려고 오랜 시간이 지난 후에 사용자 ID를 얻기 위해 액세스 토큰이 필요하다는 것을 알게되었습니다. signed_request 형식의 액세스 토큰을 얻으려면 사용자가 먼저 앱에 권한을 부여해야합니다 (권한을 얻으려면). 도움이 되길 바란다.

1

나는 비슷한 문제로 고생했다. 여기에 도움이 될만한 해결책이있다. 당신이로 캔버스 URL을 표시하는 경우

$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

위 "localhost"를 응용 프로그램 도메인에서 코드 설명은 getUser()가 0을 반환하면 사용자가 응용 프로그램을 수락하고 사용 권한을 얻는 페이지로 $ facebook-> getLoginUrl()을 리디렉션해야합니다. 그렇지 않으면 사용자가 그렇지 않으면 getUser()가 작동합니다. 다시 0이 될거야. – dendini

관련 문제