hoauth2-2.10.0: Haskell OAuth2 authentication client
Safe HaskellSafe-Inferred
LanguageHaskell2010

Network.OAuth.OAuth2

Description

A lightweight oauth2 Haskell binding. See Readme for more details

Synopsis

OAuth2 Configuration

data OAuth2 Source #

Query Parameter Representation

Constructors

OAuth2 

Fields

Instances

Instances details
Show OAuth2 Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

showsPrec :: Int -> OAuth2 -> ShowS

show :: OAuth2 -> String

showList :: [OAuth2] -> ShowS

Default OAuth2 Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

def :: OAuth2

Eq OAuth2 Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

(==) :: OAuth2 -> OAuth2 -> Bool

(/=) :: OAuth2 -> OAuth2 -> Bool

Tokens

newtype AccessToken Source #

Constructors

AccessToken 

Fields

Instances

Instances details
FromJSON AccessToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

parseJSON :: Value -> Parser AccessToken

parseJSONList :: Value -> Parser [AccessToken]

ToJSON AccessToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

toJSON :: AccessToken -> Value

toEncoding :: AccessToken -> Encoding

toJSONList :: [AccessToken] -> Value

toEncodingList :: [AccessToken] -> Encoding

Show AccessToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

showsPrec :: Int -> AccessToken -> ShowS

show :: AccessToken -> String

showList :: [AccessToken] -> ShowS

Binary AccessToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

put :: AccessToken -> Put

get :: Get AccessToken

putList :: [AccessToken] -> Put

Eq AccessToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

(==) :: AccessToken -> AccessToken -> Bool

(/=) :: AccessToken -> AccessToken -> Bool

newtype RefreshToken Source #

Constructors

RefreshToken 

Fields

Instances

Instances details
FromJSON RefreshToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

parseJSON :: Value -> Parser RefreshToken

parseJSONList :: Value -> Parser [RefreshToken]

ToJSON RefreshToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

toJSON :: RefreshToken -> Value

toEncoding :: RefreshToken -> Encoding

toJSONList :: [RefreshToken] -> Value

toEncodingList :: [RefreshToken] -> Encoding

Show RefreshToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

showsPrec :: Int -> RefreshToken -> ShowS

show :: RefreshToken -> String

showList :: [RefreshToken] -> ShowS

Binary RefreshToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

put :: RefreshToken -> Put

get :: Get RefreshToken

putList :: [RefreshToken] -> Put

Eq RefreshToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

(==) :: RefreshToken -> RefreshToken -> Bool

(/=) :: RefreshToken -> RefreshToken -> Bool

ToQueryParam RefreshToken Source # 
Instance details

Defined in Network.OAuth2.Experiment.Types

Methods

toQueryParam :: RefreshToken -> Map Text Text Source #

newtype IdToken Source #

Constructors

IdToken 

Fields

Instances

Instances details
FromJSON IdToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

parseJSON :: Value -> Parser IdToken

parseJSONList :: Value -> Parser [IdToken]

ToJSON IdToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

toJSON :: IdToken -> Value

toEncoding :: IdToken -> Encoding

toJSONList :: [IdToken] -> Value

toEncodingList :: [IdToken] -> Encoding

Show IdToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

showsPrec :: Int -> IdToken -> ShowS

show :: IdToken -> String

showList :: [IdToken] -> ShowS

Binary IdToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

put :: IdToken -> Put

get :: Get IdToken

putList :: [IdToken] -> Put

Eq IdToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

(==) :: IdToken -> IdToken -> Bool

(/=) :: IdToken -> IdToken -> Bool

newtype ExchangeToken Source #

Authorization Code

Constructors

ExchangeToken 

Fields

Instances

Instances details
FromJSON ExchangeToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

parseJSON :: Value -> Parser ExchangeToken

parseJSONList :: Value -> Parser [ExchangeToken]

ToJSON ExchangeToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

toJSON :: ExchangeToken -> Value

toEncoding :: ExchangeToken -> Encoding

toJSONList :: [ExchangeToken] -> Value

toEncodingList :: [ExchangeToken] -> Encoding

Show ExchangeToken Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

showsPrec :: Int -> ExchangeToken -> ShowS

show :: ExchangeToken -> String

showList :: [ExchangeToken] -> ShowS

ToQueryParam ExchangeToken Source # 
Instance details

Defined in Network.OAuth2.Experiment.Types

Methods

toQueryParam :: ExchangeToken -> Map Text Text Source #

data OAuth2Token Source #

Constructors

OAuth2Token 

Fields

Instances

Instances details
FromJSON OAuth2Token Source #

Parse JSON data into OAuth2Token

Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

parseJSON :: Value -> Parser OAuth2Token

parseJSONList :: Value -> Parser [OAuth2Token]

ToJSON OAuth2Token Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

toJSON :: OAuth2Token -> Value

toEncoding :: OAuth2Token -> Encoding

toJSONList :: [OAuth2Token] -> Value

toEncodingList :: [OAuth2Token] -> Encoding

Generic OAuth2Token Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Associated Types

type Rep OAuth2Token :: Type -> Type

Methods

from :: OAuth2Token -> Rep OAuth2Token x

to :: Rep OAuth2Token x -> OAuth2Token

Show OAuth2Token Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

showsPrec :: Int -> OAuth2Token -> ShowS

show :: OAuth2Token -> String

showList :: [OAuth2Token] -> ShowS

Binary OAuth2Token Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

put :: OAuth2Token -> Put

get :: Get OAuth2Token

putList :: [OAuth2Token] -> Put

Eq OAuth2Token Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

Methods

(==) :: OAuth2Token -> OAuth2Token -> Bool

(/=) :: OAuth2Token -> OAuth2Token -> Bool

type Rep OAuth2Token Source # 
Instance details

Defined in Network.OAuth.OAuth2.Internal

type Rep OAuth2Token = D1 ('MetaData "OAuth2Token" "Network.OAuth.OAuth2.Internal" "hoauth2-2.10.0-5OeAENsjiwYCIynXqQWQLg" 'False) (C1 ('MetaCons "OAuth2Token" 'PrefixI 'True) ((S1 ('MetaSel ('Just "accessToken") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AccessToken) :*: S1 ('MetaSel ('Just "refreshToken") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe RefreshToken))) :*: (S1 ('MetaSel ('Just "expiresIn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)) :*: (S1 ('MetaSel ('Just "tokenType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "idToken") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe IdToken))))))

Client Authentication methods

data ClientAuthenticationMethod Source #

https://www.rfc-editor.org/rfc/rfc6749#section-2.3 According to spec:

The client MUST NOT use more than one authentication method in each request.

Which means use Authorization header or Post body.

However, I found I have to include authentication in the header all the time in real world.

In other words, ClientSecretBasic is always assured. ClientSecretPost is optional.

Maybe consider an alternative implementation that boolean kind of data type is good enough.

Utilies for Request and URI

type PostBody = [(ByteString, ByteString)] Source #

Type synonym of post body content

type QueryParams = [(ByteString, ByteString)] Source #

Type sysnonym of request query params

defaultRequestHeaders :: [(HeaderName, ByteString)] Source #

appendQueryParams :: [(ByteString, ByteString)] -> URIRef a -> URIRef a Source #

uriToRequest :: MonadThrow m => URI -> m Request Source #

requestToUri :: Request -> URI Source #

hostLens :: Lens' Request ByteString Source #

portLens :: Lens' Request Int Source #

Authorization Requset

authorizationUrlWithParams :: QueryParams -> OAuth2 -> URI Source #

Prepare the authorization URL. Redirect to this URL asking for user interactive authentication.

Since: 2.6.0

Token Request

OAuth'ed http client utilities