2012-05-13 16 views
5

Per favore, ho bisogno di aiuto. Ho a che fare con questo problema per 1 mese !!Facebook-connect fornisce un ciclo di reindirizzamento

Vorrei implementare Facebook Connetti login al mio sito web, utilizzando PHP e php-sdk 3.1.1. In poche parole, il mio codice funziona offline (su localhost) ma non online e risulta in "Troppi loop di reindirizzamento (su Chrome)": Errore 310 (net :: ERR_TOO_MANY_REDIRECTS): c'erano troppi reindirizzamenti.

Ecco il mio codice:

1/a caricare Facebook Connect SDK e init è:

require 'src/facebook.php'; 
    $facebook = new Facebook(array(
     'appId' => '209633612480053', 
     'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
    )); 

Si prega di notare che ho creato due applicazioni a pagina facebook-sviluppatore, uno per le prove in linea, e l'altro per i test online. E sono sicuro di passare correttamente tra le due coppie di appId/secret (online e offline) durante i test. Quindi non è il problema del cattivo facebbok-connect init.

2/I cercare di ottenere informazioni all'utente:

$uid = $facebook->getUser(); 

    if($uid) 
    { 
    /* 
     * Get user information. 
     */ 
    $user = $facebook->api('me/'); 
    print_r($user); // Display user info. 
    } 
    else 
    { 
    /* 
     * Redirect to FB login URL to allow access. 
     */ 
    $loginURL = $facebook->getLoginURL(); 
    echo '<script> top.location.href=\''.$loginURL.'\'</script>'; 
    } 

E 'così semplice: se ic utente connesso a Facebook, in modo da visualizzare le sue informazioni, altrimenti, reindirizzamento alla pagina di login di Facebook per consentire l'accesso.

funziona perfettamente offline ma in linea, ottengo un errore di cromo:

This webpage has a redirect loop 
The webpage at https://www.facebook.com/dialog/oauth?client_id=209633612480053&redirect_uri=http%3A%2F%2Fwww.bluward.com%2Foauth%2Ffacebook&state=551f60cd4be6cd8ed1622f8168a5219a#_=_ has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer. 

Alcune informazioni aggiuntive: in linea, io uso host provider 1and1, e per essere sicuri di avere la stessa configurazione del server di server non in linea (che è un MAMP Pro), ho caricato il file sams php.ini.

Per favore, se qualcuno ha un'idea, o ottiene un problema simile, sarò lieto di avere aiuto.

Grazie in anticipo per tutto l'aiuto.

UPDATE:

ho aggiornato il mio codice di concentrarsi sulla linea problematico, così invece di reindirizzamento alla pagina di login di Facebook, ho visualizzare l'URL di reindirizzamento, quindi non mi resta che cliccare per accedere:

$uid = $facebook->getUser(); 

    if($uid) 
    { 
    /* 
     * Get user information. 
     */ 
    $user = $facebook->api('me/'); 
    print_r($user); // Display user info. 
    } 
    else 
    { 
    /* 
     * Redirect to FB login URL to allow access. 
     */ 
    $loginURL = $facebook->getLoginURL(); 
    echo $loginURL; // <-- HERE I CHANGED THE CODE TO DISPLAY LOGIN URL 
    } 

Quello che ho notato è che Facebook sta reindirizzando all'infinito alla mia pagina di script. Solo il parametro code sulla barra degli indirizzi cambia.

Quindi, perché facebbok sta reindirizzando alla mia pagina di script senza fornirmi le informazioni dell'utente?

Per favore, qualche idea?

+0

Hai abilitato i cookie nel tuo browser? – AlphaMale

+0

Sì, certo. Uso le impostazioni che consentono di impostare i dati locali (consigliato). – htaidirt

+0

strano allora. posiziona un'uscita dopo $ loginURL = $ facebook-> getLoginURL(); e quindi aggiornare se reindirizza ancora. – AlphaMale

risposta

5

Ho avuto questo problema, nel mio caso ho dovuto modificare base_facebook.php dal SDK:

public static $CURL_OPTS = array(
    CURLOPT_CONNECTTIMEOUT => 10, 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_TIMEOUT  => 60, 
    CURLOPT_USERAGENT  => 'facebook-php-3.2', 
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_SSL_VERIFYHOST => false, 
); 

Le ultime due opzioni che ho aggiunto manualmente.

+0

genio ha avuto lo stesso problema con loop aredirect, che ha risolto per me. –

+0

Ho lo stesso problema .. ma questa soluzione non funziona .. –

0

Ho avuto un problema simile con il browser Chrome, i cookie erano sempre errati o vuoti.

Quindi ho scaricato un esempio di facebook da Heroku (utilizza una finestra popup come login anziché un reindirizzamento js) e ho notato che non funziona in chrome quando l'URL di base del sito Web non è l'URL di root del server (es: localhost/somedirectory/). Ma dopo aver creato un host virtuale sembra che funzioni.

È possibile visualizzare un esempio dell'indice.php dall'applicazione qui https://gist.github.com/2845986

Problemi correlati