haskell model export error
===

Reference [http://stackoverflow.com/questions/11596234/haskell-facebook-example][1] works perfect, but now I can't figure out how to split it in a separate module so I can do something useful with it. Also I can't figure out what type I need to put for fbEmail fbUrl and if I need to put OverloadedStrings in every module?

login.hs

    {-# LANGUAGE OverloadedStrings #-}
    module Login (
        fbUrl,
        fbEmail
    ) where
    
    import qualified Facebook as FB
    import Network.HTTP.Conduit (withManager)
    
    app :: FB.Credentials
    app = FB.Credentials "localhost" "249348058430770" "..."
    
    url :: FB.RedirectUrl
    url = "http://localhost/fb"
    
    perms :: [FB.Permission]
    perms = ["user_about_me", "email"]
    
    --fbUrl :: FB.FacebookT FB.Auth m Text
    fbUrl = FB.getUserAccessTokenStep1 url perms
    
    --fbEmail :: Maybe FB.Text
    fbEmail c = withManager $ \manager -> FB.runFacebookT app manager $ do
        t <- FB.getUserAccessTokenStep2 url [c]
        u <- FB.getUser "me" [] (Just t)
        FB.userEmail u

main.hs

    {-# LANGUAGE OverloadedStrings #-}
    module Main (
      main
    ) where
    
    import Login
    import Control.Monad.IO.Class (liftIO)
    import System.IO
    
    main :: IO ()
    main = do
        u <- fbUrl
        liftIO $ print u
        a <- liftIO $ readLn
        e <- fbEmail a
        liftIO $ print e

I get the following error 

    src/Login.hs:26:5:
        Couldn't match expected type `FB.FacebookT FB.Auth m0 a0'
                    with actual type `Maybe text-0.11.2.0:Data.Text.Internal.Text'
        In the return type of a call of `FB.userEmail'
        In a stmt of a 'do' block: FB.userEmail u
        In the second argument of `($)', namely
          `do { t <- FB.getUserAccessTokenStep2 url [c];
                u <- FB.getUser "me" [] (Just t);
                FB.userEmail u }'

  [1]: http://stackoverflow.com/questions/11596234/haskell-facebook-example
