Authentication backend for Yesod using Facebook.

Version on this page:1.6.6
LTS Haskell 12.24:1.9.1
Stackage Nightly 2018-09-28:1.9.0
Latest on Hackage:1.9.1

See all snapshots yesod-auth-fb appears in

BSD3 licensed by Felipe Lessa, Michael Snoyman
Maintained by Sibi

Module documentation for 1.6.6

There are no documented modules for this package.


Build Status

Authentication backend for Yesod using Facebook


Sample code showing Facebook authentication in action:

{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE OverloadedStrings #-}

import Data.Text (Text)
import Yesod
import Yesod.Auth
import Yesod.Facebook
import Yesod.Auth.Facebook.ServerSide
import Facebook (Credentials(..))

fbclientId :: Text
fbclientId = "sample_fb_client_id"

fbclientSecret :: Text
fbclientSecret = "sample_fb_secret"

data App =

/ HomeR GET
/auth AuthR Auth getAuth

instance Yesod App where
  approot = ApprootStatic "http://localhost:3000"

instance YesodFacebook App where
  fbCredentials _ = Credentials "yesod" fbclientId fbclientSecret

instance YesodAuth App where
  type AuthId App = Text
  getAuthId = return . Just . credsIdent
  loginDest _ = HomeR
  logoutDest _ = HomeR
  authPlugins _ = [authFacebook ["user_about_me", "email"]]
  -- The default maybeAuthId assumes a Persistent database. We're going for a
  -- simpler AuthId, so we'll just do a direct lookup in the session.
  maybeAuthId = lookupSession "_ID"

instance RenderMessage App FormMessage where
  renderMessage _ _ = defaultFormMessage

getHomeR :: Handler Html
getHomeR = do
  maid <- maybeAuthId
            <p>Your current auth ID: #{show maid}
            $maybe _ <- maid
                    <a href=@{AuthR LogoutR}>Logout
                    <a href=@{AuthR facebookLogout}>Facebook logout
                    <a href=@{AuthR LoginR}>Go to the login page

main :: IO ()
main = warp 3000 App


Version 1.9.1

  • Only pass code query param to getUserAccessTokenStep2

Version 1.9.0

  • Supports conduit >= 1.3.0
  • Documentation updated to include demo code.
  • Supports latest yesod >= 1.6.0.
  • Remove dependency on lifted-base and related ecosystem.
comments powered byDisqus