Yii 1.1: Get notified about the status of a Facebook user in your web app using periodic Ajax calls.

6 followers

hello, This article is helpful only if you have the following situation: A web app which uses facebook login to login its users and if a user is logged out from his/her facebook account through another browser tab, then your app dont know that he is logged out out or not from his facebook account and he/she will remain as logged in your web application.Its ok if you have no problem with this situation.But if you want to forcefully logout the user from your application if he is logged out from his facebook account means you can try this example.This example uses periodic ajax calls to facebook's graph api to check whether the user is logged in or not.

<script type="text/javascript">
 
  var loginStatus=null;
 
      window.fbAsyncInit = function() {
        FB.init({
          appId      : "<?php echo Yii::app()->params['facebook_appId'] ?>",
          status     : true, 
          cookie     : true,
          xfbml      : true,
          oauth      : true,
        });
 
             /*This will work only at onload*/
 
               FB.getLoginStatus(function(response) {
                                if (response.status === 'connected') {
 
                                  loginStatus='online'; 
                                }
                                else{
                                  loginStatus='offline';  
 
                                }
 
               });
 
        /*The function used for ajax calls */
        function checkStatus()
         {
 
           FB.api('/me', function(response) {
 
              var isGuest="<?php if (Yii::app()->user->isGuest) echo 'true'; else echo 'false'; ?>";
 
              if(response.name==undefined&&loginStatus=='online'&&isGuest=='false')
                {
 
                 window.location="<?php echo Yii::app()->createAbsoluteUrl('site/logout'); ?>";
 
                }
 
            });
 
         }
 
         setInterval(function(){  
              checkStatus();
          },5000);  
 
      };
 
    (function(d){
         var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
         js = d.createElement('script'); js.id = id; js.async = true;
         js.src = "//connect.facebook.net/en_US/all.js";
         d.getElementsByTagName('head')[0].appendChild(js);
       }(document));
 
 
    </script>

I have posted a working code above.anyway let me know if you have any problem with this. -Sirin

Be the first person to leave a comment

Please to leave your comment.

Write new article
  • Written by: sirin k
  • Category: Tips
  • Yii Version: 1.1
  • Votes: +4
  • Viewed: 5,438 times
  • Created on: Aug 30, 2012
  • Last updated: Aug 30, 2012
  • Tags: facebook, user