2011-08-28 16 views
8

sto usando di JavaScript SDK e cercando di determinare se l'utente è loggato o meno, ho il seguente codice:Facebook JS Sdk - FB.getLoginStatus = undefined

 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', 
         } 
       }); 
      } 
      }); 
     }; 

Il response.AuthResponse per getLoginStatus è 'undefined', ma in realtà sono loggato con le autorizzazioni impostate per questa app.

Qualche idea sul perché continuerebbe a mostrarsi indefinito? Quando tento di accedere nuovamente, chiude la casella di Facebook (perché sono già connesso) e aggiorna la pagina, mostrando di nuovo "non definito".

Grazie per qualsiasi aiuto!

risposta

8

Stai mescolando oggetti OAuth e OAuth 2. Impostare init per utilizzare OAuth 2 utilizzando oauth : true (consigliato come all apps must use OAuth 2 by Oct 1) e utilizzare response.authResponse in modo coerente anziché response.session oppure utilizzare OAuth 1 e utilizzare response.session in modo coerente. Se vai a OAuth 2, devi anche utilizzare scope anziché perms per le autorizzazioni desiderate.

+0

Non avrei mai pensato a questo come una soluzione! Wow, grazie Steve! – iUsable

Problemi correlati