2011-08-28 20 views
8

używam Facebooka JavaScript SDK i próbuje ustalić, czy użytkownik jest zalogowany czy nie, mam następujący kod:Facebook JS SDK - FB.getLoginStatus = niezdefiniowany

 window.fbAsyncInit = function() {  
      FB.init({ 
       appId:'139894666087975', cookie:true, status:true, xfbml:true 
      }); 

      $('.login_fb').click(function(){ 
       FB.login(function(response) { 
       if(response.session) 
       { 
        if (response.perms) { 
         window.location.reload(); 
        } 
       } 
       },{perms:'email,user_birthday,user_hometown,user_location,publish_stream'}); 
      }); 

      FB.getLoginStatus(function(response) { 
             alert(response.authResponse); 
       if (response.authResponse) { 
        alert(response.authResponse); 
       } else { 
       $.blockUI({ 
        message: $('#fblogin'), 
        css: { 
         top: '9%', 
         left: ($(window).width() - 700) /2 + 'px', 
         width: '700px', 
         cursor: 'hand', 
         border: '10px solid #ccc', 
         } 
       }); 
      } 
      }); 
     }; 

response.AuthResponse dla getLoginStatus jest "niezdefiniowany", ale ja faktycznie jestem zalogowany z ustawieniami uprawnień dla tej aplikacji.

Każdy pomysł, dlaczego nadal będzie wyświetlany jako niezdefiniowany? Kiedy próbuję się ponownie zalogować, zamyka się tylko okno Facebooka (ponieważ jestem już zalogowany) i odświeżam stronę, ponownie wyświetlając "niezdefiniowany".

Dzięki za pomoc!

Odpowiedz

8

Mieszamy tam obiekty OAuth i OAuth 2. Ustaw init, aby używał OAuth 2 przy użyciu oauth : true (zalecane jako all apps must use OAuth 2 by Oct 1) i konsekwentnie używaj response.authResponse zamiast response.session lub przejdź z OAuth 1 i konsekwentnie używaj response.session. Jeśli przejdziesz do OAuth 2, będziesz potrzebować używaćzamiast perms dla żądanych uprawnień.

+0

Nigdy bym nie pomyślał o tym jako o poprawce! Wow, dzięki Steve! – iUsable

Powiązane problemy