Index: fb/fb_user.module
===================================================================
--- fb/fb_user.module	(revision 5135)
+++ fb/fb_user.module	(working copy)
@@ -150,7 +150,7 @@
       fb_controls(FB_USER_CONTROL_NO_CREATE_MAP, TRUE);
       fb_controls(FB_USER_CONTROL_NO_CREATE_ACCOUNT, TRUE);
     }
-    if (isset($_REQUEST['_fb_user_fbu'])) {
+    if (isset($_REQUEST['_fb_user_fbu']) && $_REQUEST['_fb_user_fbu'] == $fbu) {
       // We've triggered a reload.  Don't redirect again, as that will
       // cause infinite loop if browser not accepting third-party cookies.
       fb_controls(FB_USER_CONTROL_NO_REDIRECT, TRUE);
@@ -233,12 +233,14 @@
     $uid = $GLOBALS['user']->uid; // Remember original uid.
     _fb_user_process_authorized_user();
     if ($uid != $GLOBALS['user']->uid) {
-      // during user processing, we started a new session.
+      // We've detected a change of user and started a new session.  Refresh page.
       if (!fb_controls(FB_USER_CONTROL_NO_REDIRECT)) {
-        // No longer passing _fb_user_fbu, because it causes problem when logging out of one frame then refreshing a frame with that parameter in the URL.
-        drupal_goto($_GET['q'], array(
-                      //'_fb_user_fbu' => $fbu, // Avoid refresh loop, disabled for now.  Still needed?
-                    ));
+        if (empty($REQUEST['_fb_user_fbu']) || $REQUEST['_fb_user_fbu'] != $fbu) {
+          drupal_goto($_GET['q'], array(
+                        // Parameter avoids refresh loop when third-party cookies disabled on Safari.
+                        '_fb_user_fbu' => $fbu,
+                      ));
+        }
       }
     }
   }
