5

Il sotto collega l'evento di accesso a un div. Se clicco, ottengo il popup di accesso js sdk previsto. Dopo aver inviato il popup con le mie credenziali, tuttavia, il popup diventa bianco e non si chiude. Se aggiorno la pagina, ho effettuato l'accesso, ma non si aggiorna automaticamente come ci si potrebbe aspettare. Qualcuno ha qualche idea?Facebook JS SDK - Il popup di accesso non chiude


Edit: Lo stesso codice (con le credenziali App ID e dominio diff) lavora su un server diverso. Questo mi porta a credere che il mio problema potrebbe non essere correlato al codice sottostante. Esistono configurazioni di app o server che potrebbero causare il mancato completamento/aggiornamento del popup di accesso?


<!DOCTYPE html> 
<html class="no-js ie ie10plus" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> 
    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object#"> 
     <script src="http://ajax.aspnetcdn.com/ajax/modernizr/modernizr-2.0.6-development-only.js"></script> 
    </head> 
    <body> 
     <div id="fb-root"></div> 
     <div id="fbLogin">Test login link</div> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" ></script> 
     <script>    
       var fbmm = {}; 

       window.fbAsyncInit = function() { 
       FB.init({ 
        appId  : '339910146083688', // App ID 
        cookie: true, 
        xfbml: true, 
        status: true, 
        oauth: true 
       }); 

       $(document).ready(function(){ 
        $("#fbLogin").click(function(){ 
         console.log('test'); 
         FB.login(function(response) { 
          if (response.authResponse) { 
          console.log('Welcome! Fetching your information.... '); 
          FB.api('/me', function(response) { 
           console.log('Good to see you, ' + response.name + '.'); 
          }); 
          } else { 
          console.log('User cancelled login or did not fully authorize.'); 
          } 
         }); 
        }); 
       }); 

       }; 

      (function(d){ 
      var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
      if (d.getElementById(id)) {return;} 
      js = d.createElement('script'); js.id = id; js.async = true; 
      js.src = "//connect.facebook.net/en_US/all.js"; 
      ref.parentNode.insertBefore(js, ref); 
      }(document)); 
     </script> 
    </body> 
</html> 
+0

Il codice va bene, lavorando come previsto. – Philip

+0

Grazie Philip. La finestra di dialogo non si chiude però sul dominio 8000 della porta, quando non sono autenticato ed eseguo l'accesso. Non sono sicuro, ma potrebbe essere necessario uscire da Facebook e fare clic per vederlo. – Matrym

+0

Ho disconnesso e la finestra si sta chiudendo dopo il login. lo eseguo alla porta 80 con il mio app_id. Nelle impostazioni dell'URL dell'app, hai aggiunto l'url con la porta? – Philip

risposta

5

ci sono alcuni problemi noti durante il test sulle porte diverso da 80 o 443. provare a impostare la vostra macchina di prova su uno di questi (“normale”) HTTP (S) le porte, e vedere se il il problema persiste ancora.

+0

Grazie CBroe, ci provo. – Matrym

+0

Questo era davvero il problema. Grazie mille :) – Matrym

0

La mia ipotesi è che il problema si verifica poiché non si fornisce un URL di canale, come indicato nel documentation (under the Channel Url section):

Il file canale risolve alcuni problemi con la comunicazione tra domini in alcuni browser.
...
Il parametro channelUrl è facoltativo, ma consigliato .

Anche se il vostro problema non è elencato nelle tre questioni il file del canale risolve, ho sperimentato lo stesso problema come una volta e risolto con l'aggiunta del canale, anche se era qualche tempo fa, quindi non sono al 100 % è lo stesso.
Si è spiegato non come creare il file di canale, e avete bisogno di cambiare il vostro javascript solo un po ':

FB.init({ 
    appId: '339910146083688', // App ID 
    cookie: true, 
    xfbml: true, 
    status: true, 
    oauth: true, 
    channelUrl: YOUR_CHANNEL_URL 
}); 
+0

Grazie Nitzan, anche quella era una delle mie ipotesi. Ho provato a inserire un file di canale e non ha funzionato. – Matrym

+0

Assicurati che il canale sia servito dallo stesso identico dominio, comprese le porte, inoltre risulta che ci sono 2 segnalazioni di bug che potrebbero essere rilevanti. [Il pulsante Login Fb non si innesca e rimane sospeso dopo il login riuscito] (http://developers.facebook.com/bugs/421137377931628) utilizza anche un'altra porta, quindi forse quello che @CBroe ha scritto è il caso, il secondo: [Fb .login in explorer 7 mostra popup vuoto e non si chiude da sé] (http://developers.facebook.com/bugs/255683901207692) è per IE7 quindi non ne sono sicuro. –

0

si può invece cercare di personalizzare l'applicazione di log-in con le opzioni di dialogo di autenticazione di personalizzazione del Impostazioni dell'app. Qui puoi configurare le autorizzazioni che desideri e Facebook reindirizzerà automaticamente alla pagina di app-auth se l'utente non ha effettuato il login/autorizzato la tua app. Devi prima abilitarlo dalle impostazioni dell'app> Finestra di dialogo Autori. Vedi l'annotazione Clicca qui nell'immagine qui sotto. Spero che questo ti aiuti. enter image description here

0

Ho avuto lo stesso problema quando l'indirizzo del sito Web di sviluppo era http://localhost Ho definito un host nel file hosts di Windows e ha funzionato bene.

0

ho ricevuto una chiamata simile a FB.login() per chiudere la finestra di dialogo modificando

onclick="loginviafb()"; 

a

onclick="loginviafb(); return false;"