OAuth2 authentication for yesod
Go to file
Gordon Fontenot 34db7433b7 Bump aeson version requirement
Yesod 1.4 uses Aeson 0.8.0.1, which makes this library incompatible.
Bumping this to 0.9 matches Yesod's requirements.
2014-10-06 18:50:24 -04:00
Yesod/Auth Whitespace 2014-09-22 15:02:32 -04:00
.gitignore misc gitignore updates 2014-09-20 23:53:46 -07:00
LICENSE Initial import 2013-07-14 11:11:44 +02:00
README.md Update README for new usage 2014-09-22 15:02:28 -04:00
Setup.lhs Initial import 2013-07-14 11:11:44 +02:00
yesod-auth-oauth2.cabal Bump aeson version requirement 2014-10-06 18:50:24 -04:00

Yesod.Auth.OAuth2

OAuth2 AuthPlugins for Yesod.

Basic Usage

To use one of the supported providers:

import Yesod.Auth
import Yesod.Auth.OAuth2.Github

instance YesodAuth App where
    -- ...

    authPlugins _ = [oauth2Github clientId clientSecret]

clientId :: Text
clientId = "..."

clientSecret :: Text
clientSecret = "..."

Advanced Usage

To use any other provider:

import Yesod.Auth
import Yesod.Auth.OAuth2

instance YesodAuth App where
    -- ...

    authPlugins _ = [myPlugin]

myPlugin :: AuthPlugin m
myPlugin = authOAuth2 "mysite"
    (OAuth2
        { oauthClientId            = "..."
        , oauthClientSecret        = "..."
        , oauthOAuthorizeEndpoint  = "https://mysite.com/oauth/authorize"
        , oauthAccessTokenEndpoint = "https://mysite.com/oauth/token"
        , oauthCallback            = Nothing
        })
    makeCredentials

makeCredentials :: Manager -> AccessToken -> IO (Creds m)
makeCredentials manager token = do
    result <- authGetJSON manager token "https://mysite.com/api/me.json"
    return $ -- Parse the JSON into (Creds m)

If you write one of these, please consider opening a Pull Request