mirror of
https://github.com/freckle/yesod-auth-oauth2.git
synced 2026-01-15 13:48:30 +01:00
57 lines
1.2 KiB
Markdown
57 lines
1.2 KiB
Markdown
# Yesod.Auth.OAuth2
|
|
|
|
OAuth2 `AuthPlugin`s for Yesod.
|
|
|
|
## Basic Usage
|
|
|
|
To use one of the supported providers:
|
|
|
|
```haskell
|
|
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:
|
|
|
|
```haskell
|
|
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*
|