PHP SDK 3.1.1 getUser() a volte return 0

Questo mi sta facendo impazzire >=(

$facebook->getUser() funziona bene a volte, ma a volte restituisce 0

Ecco il mio codice:

require 'fbapi/facebook.php';
$facebook = new Facebook(array(
'appId' => 'xxx',
'secret' => 'xxxxx',
));
$user = $facebook->getUser();

il appId e segreto sono quelli corretti.

Quale potrebbe essere il motivo che getUser a volte restituisce 0???

  • Sarà questo argomento aiutare a risolvere il problema? : Perché Facebook SDK PHP getUser restituisce sempre 0?
  • Non dovrebbe avere nulla a che fare con JS SDK. Egli non fa nulla qui che sarebbe necessaria.
  • Stai usando Safari? Stai usando JS SDK in collaborazione con l’SDK PHP?
  • +1 @Mike, le persone stanno segnalando che quando si utilizza il PHP SDK con il JS-SDK cookies non avere impostato la prima ricarica. hai bisogno di un’altra ricarica per avere la $user set (confermo il problema su FF)



5 Replies
  1. 1

    È più che probabile qualcosa su Facebook la fine (devs sono passati attraverso questa prima un po ‘ indietro). Se $user restituisce null o 0, semplicemente reindirizzare loro l’url di login (che dovresti avere). Il liklihood di ritornare 0 è il minimo (a meno che c’è un bug sulla loro fine o c’è di più per il vostro codice di quello che hai postato).

    • Grazie Philips, ma se lo faccio, la pagina loop infinito… 🙁 Qui c’è il codice con reload e loop.. ` if ($user) { try { $user_profile = $facebook->api(‘/me’);<br> } catch (FacebookApiException $e) {<br> echo ‘<pre>’.htmlspecialchars(print_r($e, true)).'</pre>’; } }else{ $log = $facebook->getLoginUrl(array(‘tela’ => 1,’fbconnect’ => 0)); echo(“<script> top.posizione.href='”.$log.”‘</script>”); } `
    • Siete assolutamente sicuri che si sta utilizzando l’ultima SDK PHP?
    • è forse l’applicazione impostazioni? Sono aggiornati a OAuth 2.0?
    • Sì @philips, ho aggiornato a OAuth 2.0 e io uso l’ultima PHP SDK scaricato oggi.. <br> a Volte il getUser funziona bene, e a volte restituiscono 0.. =/ non ho idea, perchè non ho cambiato alcuna riga di codice..
    • Se funziona per l’occasione, e mi porta a credere che il suo un problema intermittente su Facebook fine. Questo è accaduto con il vecchio SDK PHP (prima del 3.0), dove, a volte, ritorna 0.
    • Voglio scaricare PHP Skd ancora una volta solo per provare.. Grazie mille @Filippo
    • stai usando JS SDK?
    • Grazie @Phillips, sì, io sto usando JS SDK troppo. Sto testando againg ora.
    • Io sono per gli utenti che eseguono in questo, e io uso il JS SDK e PHP SDK. La cosa pazzesca è che non riesco a riprodurre a tutti da parte mia, e sembra essere sempre la stessa: gli utenti in esecuzione in esso. Li faccio a cancellare la cache e succede ancora. Molto strano.
    • Ti capita di avere cookie:true attivata con il JS SDK? Svolta che potrebbe risolvere il problema (anche se si perderebbe l’accesso ai cookie del corso).

  2. 1

    Mi sono imbattuto in un problema simile. $facebook->getUser() ritornando a 0 e, a volte, è tornato id utente valido quando l’utente non è stato effettivamente registrato, con conseguente Irreversibile Oauth errore quando ho provato a fare il grafico chiamate api. Ho finalmente risolto questo problema. Non so se è il modo giusto, ma funziona. Ecco il codice :

    <?php
    include 'includes/php/facebook.php';
    $app_id = "APP_ID";
    $app_secret = "SECRET_KEY";
    $facebook = new Facebook(array(
        'appId' => $app_id,
        'secret' => $app_secret,
        'cookie' => true
    ));
    
    $user = $facebook->getUser();
    
    if ($user <> '0' && $user <> '') { /*if valid user id i.e. neither 0 nor blank nor null*/
    try {
    //Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
    } catch (FacebookApiException $e) { /*sometimes it shows user id even if user in not logged in and it results in Oauth exception. In this case we will set it back to 0.*/
    error_log($e);
    $user = '0';
    }
    }
    if ($user <> '0' && $user <> '') { /*So now we will have a valid user id with a valid oauth access token and so the code will work fine.*/
    echo "UserId : " . $user;
    
    $params = array( 'next' => 'http://www.quickbite.co.in' );
    echo "<p><a href='". $facebook->getLogoutUrl($params) . "'>Logout</a>";
    
    $user_profile = $facebook->api('/me');
    echo "<p>Name : " . $user_profile['name'];
    echo "<p>";
    print_r($user_profile);
    
    } else {/*If user id isn't present just redirect it to login url*/
    header("Location:{$facebook->getLoginUrl(array('req_perms' => 'email,offline_access'))}");
    }
    
    ?>
    • funziona 🙂 grazie.
  3. 0

    Ho trovato una semplice soluzione a questo problema..
    questo accade quando facebook classe non è in grado di impostare o aggiungere la variabile di sessione sul server..

    Nel mio codice ho usato session_write_close() prima di facebook classi a causa del quale ho ottenuto questo errore.. “CSRF stato token non corrisponde a quello fornito.”..

    Poi ho spostato session_write_close() alla fine del codice e, infine, si è lavorato.. 🙂

  4. 0

    Quindi ero alle prese con lo stesso problema, getUser() sempre restituito 0. Non ha alcun senso a tutti. NginX errore registri di stato che mostra il seguente errore ‘CSRF stato token non corrisponde a quello fornito’. Poi ho iniziato il debug dell’sdk e ridotto a getAccessTokenFromCode() non in grado di ottenere il giusto accesstoken da Facebook server, qualcosa a che fare con i certificati SSL.

    La soluzione indicati di seguito link risolto il problema per me.

    https://github.com/facebook/php-sdk/issues/272

    Inoltre, potrebbe essere necessario copiare e incollare il ‘fb_ca_chain_bundle.crt di file in bundle con l’sdk per cartella in cui il vostro facebook di classe si trova il file. l’ho fatto.

    Spero che questo ha un senso.

    • Non è per caso ricordare che la questione fosse? E ‘ stato tolto di github, visto che…
    • fb_ca_chain_bundle.crt è già lì, ma sto avendo difficoltà di nuovo, ma getuser dopo facebook richiamata.

Lascia un commento