2011-12-29 5 views
6

Я реализую вход в Facebook, используя PHP SDK с Codeigniter. Я получаю всплывающее окно входа в систему Facebook, но не могу получить идентификатор пользователя - он всегда возвращает 0.Facebook getUser() возвращает 0

Я поместил файлы facebook.php и base_facebook.php в файл моих библиотек и включил его в качестве библиотеки в Codeigniter после учебника here.

Может ли кто-нибудь сказать мне, что они думают? Я использую следующий код -

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

Если домен App реально домен, но сайт Ссылка на локальный , возврат функции getUser 0

+0

не правильно, выше работает даже при локальном хосте, если вы указываете брезентовый URL, как «HTTP: // локальный/мой пра-приложение /» и под приложения доменов «локальный» – dendini

0

Пришла ситуация, когда getUser() был возвращать 0, когда это действительно не должно быть, приложение все еще было изолировано. Оказывается, пользователь не принял запрос, чтобы быть разработчиком приложения.

0

У меня возникла аналогичная проблема. Я использовал примерный проект и не мог понять, почему он продолжает возвращаться. Пробовал почти все связанные ссылки здесь, но никто не решил его.

Решение заключается в обновлении файлов SDK от Facebook в примере проекта. Простая и легко пропущенная,

0

У меня была такая же проблема, после долгого времени, пытаясь выяснить, в чем проблема, Я обнаружил, что вам нужен токен доступа, чтобы получить идентификатор пользователя. Чтобы получить доступ к токену формы 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

Смежные вопросы