BSD-3-Clause licensed by Felipe Lessa, Michael Snoyman
This version can be pinned in stack with:yesod-auth-fb-1.9.1@sha256:09258041da955c5fd5df91ef9ee84383530fb187183bff8a1648445d11d81e48,2617
Module documentation for 1.9.1
Depends on 16 packages
(full list with versions):
aeson, 
base, 
bytestring, 
conduit, 
fb, 
http-conduit, 
resourcet, 
shakespeare, 
text, 
time, 
transformers, 
unliftio, 
wai, 
yesod-auth, 
yesod-core, 
yesod-fb yesod-auth-fb

Authentication backend for Yesod using Facebook
Demo
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 =
  App
mkYesod
  "App"
  [parseRoutes|
/ 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
  defaultLayout
    [whamlet|
            <p>Your current auth ID: #{show maid}
            $maybe _ <- maid
                <p>
                    <a href=@{AuthR LogoutR}>Logout
                    <a href=@{AuthR facebookLogout}>Facebook logout
            $nothing
                <p>
                    <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.