2011-12-29 13 views
6

Sto implementando il login di Facebook utilizzando l'SDK PHP con Codeigniter. Ottengo il popup di accesso a Facebook, accesso, ma non riesco a recuperare l'id dell'utente - restituisce sempre 0.Facebook getUser() restituisce 0

Ho inserito i file facebook.php e base_facebook.php nel mio file di librerie e l'ho incluso come libreria in Codeigniter che segue un tutorial here.

Qualcuno può dirmi cosa pensano stia succedendo? Sto usando il seguente codice -

View - Facebook pulsante di accesso

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

risposta

-1

Se il dominio applicazione è vero dominio, ma URL del sito è localhost , funzione getUser restituita 0

+0

non è corretta, quanto sopra funziona anche sotto localhost se si indica tela URL, "http: // localhost/my-grande-app /" e sotto domini app "localhost" È possibile che questo – dendini

0

Si è verificata una situazione in cui getUser() era restituendo 0 quando realmente non dovrebbe essere, l'applicazione era ancora in modalità sandbox. Si scopre che l'utente non ha accettato la richiesta di essere sviluppatore dell'applicazione.

0

Ho riscontrato un problema simile. Ho usato un progetto di esempio e non sono riuscito a capire perché continua a ritornare 0. Ho provato quasi tutti i collegamenti correlati qui, ma nessuno lo ha risolto.

La soluzione era aggiornare i file SDK di Facebook nel progetto di esempio. Semplice e facile da perdere,

0

Ho avuto lo stesso problema, dopo tanto tempo di provare a capire qual è il problema, ho scoperto che è necessario il token di accesso per ottenere l'ID utente. Per ottenere il token di accesso dal modulo signed_request, l'utente deve autorizzare (per ottenere le autorizzazioni) l'app in primo luogo. Spero che questo possa essere d'aiuto

1

Mi sono trovato un problema simile, ecco la soluzione che può aiutarti.

$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

la spiegazione del codice è che se getUser() restituisce uno 0 allora dobbiamo reindirizzare con $ facebook-> getLoginUrl() in una pagina in cui l'utente accetterà l'applicazione e otterrà le autorizzazioni, quindi getUser() funzionerà se l'utente accetta altrimenti tu otterrò di nuovo 0 – dendini

Problemi correlati