2013-06-08 31 views
7

Mam włączoną obsługę logowania FB na mojej stronie za pomocą FB JDK. Kiedy go używam, działa idealnie: otwiera się okno dialogowe, autoryzuję, a urządzenie authResponse działa zgodnie z oczekiwaniami. Kiedy inny użytkownik go używa (który jeszcze nie autoryzował aplikacji, ale jest zalogowany do FB), okno logowania pojawia się na krótką sekundę i natychmiast znika, a obiekt odpowiedzi ma status not_authorized. Jakieś pomysły, dlaczego okno dialogowe może nie wymagać od użytkownika autoryzacji?Okno fb.Login() zamyka się od razu i zwraca 'not_authorized'

W moim układzie (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)); 

Link logowanie:

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

W 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

Występuję ten sam problem. Nie mogę ustalić głównej przyczyny. –

Odpowiedz

15

Rozwiązanie że pracował dla mnie było faktycznie kości na czele - zapomniałem zmienić aplikację z trybu piaskownicy na tryb na żywo w developers app console on Facebook (kliknij r aplikacja po lewej). Ewentualnie mogłem dodać osoby, które chcę móc zalogować jako programistów lub testerów.

Nadzieję, że pomaga innym!

+1

Doh, miał ten sam problem. Dzięki za przesłanie odpowiedzi, inaczej szukałbym rozwiązania dla rozwiązania. –

+1

dziękuję - zabrał mnie 1h, aby dowiedzieć się ... –

+0

Miałem ten sam problem, to był taki głupi błąd z mojej strony, dzięki! Chciałbym tę odpowiedź 20 razy, gdybym mógł –

Powiązane problemy