diff --git a/src/Yesod/Auth/Facebook.hs b/src/Yesod/Auth/Facebook.hs
--- a/src/Yesod/Auth/Facebook.hs
+++ b/src/Yesod/Auth/Facebook.hs
@@ -94,7 +94,9 @@
     proceedR = PluginR "fb" ["proceed"]
 
     -- Redirect the user to Facebook.
-    dispatch "GET" ["login"] =
+    dispatch "GET" ["login"] = do
+        m <- getYesod
+        when (redirectToReferer m) setUltDestReferer
         redirect =<< getRedirectUrl =<< getRouteToMaster
     -- Take Facebook's code and finish authentication.
     dispatch "GET" ["proceed"] = do
@@ -121,9 +123,19 @@
         case (valid, mtoken) of
           (True, Just token) -> do
             render <- getUrlRender
-            dest <- runFB $ FB.getUserLogoutUrl token (render $ tm LogoutR)
+            dest <- runFB $ FB.getUserLogoutUrl token (render $ tm $ PluginR "fb" ["kthxbye"])
             redirect dest
-          _ -> redirect (tm LogoutR)
+          _ -> dispatch "GET" ["kthxbye"]
+    -- Finish the logout procedure.  Unfortunately we have to
+    -- replicate yesod-auth's postLogoutR code here since it's
+    -- not accessible for us.  We also can't just redirect to
+    -- LogoutR since it would otherwise call setUltDestReferrer
+    -- again.
+    dispatch "GET" ["kthxbye"] = do
+        m <- getYesod
+        deleteSession "_ID"
+        onLogout
+        redirectUltDest $ logoutDest m
     -- Anything else gives 404
     dispatch _ _ = notFound
 
diff --git a/yesod-auth-fb.cabal b/yesod-auth-fb.cabal
--- a/yesod-auth-fb.cabal
+++ b/yesod-auth-fb.cabal
@@ -1,5 +1,5 @@
 Name:                yesod-auth-fb
-Version:             0.10.1
+Version:             0.10.2
 Synopsis:            Authentication backend for Yesod using Facebook.
 Homepage:            https://github.com/meteficha/yesod-auth-fb
 License:             BSD3
