2013-06-08 22 views
7

Ho accesso FB abilitato sul mio sito Web con l'FB JDK. Quando lo uso, funziona perfettamente: si apre la finestra di dialogo, autorizzo, e lo authResponse è come previsto. Quando viene utilizzato da un altro utente (che non ha ancora autorizzato l'app, ma ha effettuato l'accesso in FB), la finestra di dialogo di accesso viene visualizzata per un breve secondo e scompare immediatamente e l'oggetto risposta ha lo stato not_authorized. Qualche idea sul motivo per cui la finestra di dialogo potrebbe non chiedere all'autore di autorizzare?La finestra fb.Login() si chiude immediatamente e restituisce 'not_authorized'

Nel mio layout (Haml):

%body 
    #fb-root 
    :javascript 
    window.fbAsyncInit = function() { 
     FB._https = false; 
     FB.init({ 
     appId  : <App ID> 
     status  : true, 
     cookie  : true, 
     oauth  : true, 
     xfbml  : true 
     }); 
     FB.getLoginStatus(function(response) { 
     if(window.reportFBstatus) { 
      reportFBstatus(response); 
     } 
     }, true); 
    }; 
    // Load the SDK 
    (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)); 

Il legame login:

%a{href: '#', onclick: 'FB.login(window.reportFBstatus, {scope: "user_about_me"})'} 

Nella CoffeeScript:

window.reportFBstatus = (response) -> 
    $.ajaxSetup({ 
    headers: 
     'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') 
    }) 
    console.log response # always shows status=not_authorized for other users 
    if response.status is 'connected' 
    auth = response.authResponse 
    $.post('/login', {fb_id: auth.userID, fb_token: auth.accessToken}, (data) -> 
     window.currentUser = data 
    ) 
+0

Sto riscontrando lo stesso problema. Non riesci a capire la causa principale –

risposta

15

La soluzione che ha funzionato per me era in realtà un osso -headed one - Ho dimenticato di cambiare l'app dalla modalità sandbox alla modalità live in developers app console on Facebook (fai clic r app a sinistra). In alternativa, avrei potuto aggiungere le persone che voglio poter accedere come sviluppatori o tester.

La speranza che aiuta gli altri!

+1

Doh, ha avuto lo stesso problema. Grazie per aver postato la risposta, altrimenti avrei cercato ore per la soluzione. –

+1

grazie - mi ha portato 1 ora per scoprire ... –

+0

Ho avuto lo stesso problema, è stato un errore stupido da parte mia, grazie! Mi piacerebbe questa risposta 20 volte se potessi –

Problemi correlati