OAuth2 AuthPlugins for Yesod.
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 = "..."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