mirror of
https://github.com/freckle/yesod-auth-oauth2.git
synced 2026-01-11 19:58:28 +01:00
OAuth2 authentication for yesod
The github API returns no name field if the user has given none (and only goes by their user handle). For that reason, make the name field optional. |
||
|---|---|---|
| Yesod/Auth | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
| Setup.lhs | ||
| yesod-auth-oauth2.cabal | ||
Yesod.Auth.OAuth2
OAuth2 AuthPlugins for Yesod.
Basic Usage
To use one of the supported providers:
import Yesod.Auth
import Yesod.Auth.OAuth2.Learn
instance YesodAuth App where
-- ...
-- https://learn.thoughtbot.com
authPlugins _ = [oauth2Learn 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 :: AccessToken -> IO (Creds m)
makeCredentials token = do
result <- authGetJSON 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