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

Network.OAuth.OAuth2.TokenRequest

Description

Bindings Access Token and Refresh Token part of The OAuth 2.0 Authorization Framework RFC6749 https://www.rfc-editor.org/rfc/rfc6749

Synopsis

Token Request Errors

data Errors Source #

Instances

Instances details
FromJSON Errors Source # 
Instance details

Defined in Network.OAuth.OAuth2.TokenRequest

ToJSON Errors Source # 
Instance details

Defined in Network.OAuth.OAuth2.TokenRequest

Generic Errors Source # 
Instance details

Defined in Network.OAuth.OAuth2.TokenRequest

Associated Types

type Rep Errors :: Type -> Type #

Methods

from :: Errors -> Rep Errors x #

to :: Rep Errors x -> Errors #

Show Errors Source # 
Instance details

Defined in Network.OAuth.OAuth2.TokenRequest

Eq Errors Source # 
Instance details

Defined in Network.OAuth.OAuth2.TokenRequest

Methods

(==) :: Errors -> Errors -> Bool #

(/=) :: Errors -> Errors -> Bool #

type Rep Errors Source # 
Instance details

Defined in Network.OAuth.OAuth2.TokenRequest

type Rep Errors = D1 ('MetaData "Errors" "Network.OAuth.OAuth2.TokenRequest" "hoauth2-2.6.0-B6PU9XFvhi0G80sxl5r9bL" 'False) ((C1 ('MetaCons "InvalidRequest" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "InvalidClient" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InvalidGrant" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "UnauthorizedClient" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "UnsupportedGrantType" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "InvalidScope" 'PrefixI 'False) (U1 :: Type -> Type))))

URL

accessTokenUrl Source #

Arguments

:: OAuth2 
-> ExchangeToken

access code gained via authorization URL

-> (URI, PostBody)

access token request URL plus the request body.

Prepare the URL and the request body query for fetching an access token.

refreshAccessTokenUrl Source #

Arguments

:: OAuth2 
-> RefreshToken

Refresh Token gained via authorization URL

-> (URI, PostBody)

Refresh Token request URL plus the request body.

Obtain a new access token by sending a Refresh Token to the Authorization server.

Token management

fetchAccessToken Source #

Arguments

:: MonadIO m 
=> Manager

HTTP connection manager

-> OAuth2

OAuth Data

-> ExchangeToken

OAuth2 Code

-> ExceptT (OAuth2Error Errors) m OAuth2Token

Access Token

Exchange code for an Access Token with authenticate in request header.

fetchAccessToken2 Source #

Arguments

:: MonadIO m 
=> Manager

HTTP connection manager

-> OAuth2

OAuth Data

-> ExchangeToken

Authorization Code

-> ExceptT (OAuth2Error Errors) m OAuth2Token

Access Token

fetchAccessTokenInternal Source #

Arguments

:: MonadIO m 
=> ClientAuthenticationMethod 
-> Manager

HTTP connection manager

-> OAuth2

OAuth Data

-> ExchangeToken

Authorization Code

-> ExceptT (OAuth2Error Errors) m OAuth2Token

Access Token

fetchAccessTokenWithAuthMethod Source #

Arguments

:: MonadIO m 
=> ClientAuthenticationMethod 
-> Manager

HTTP connection manager

-> OAuth2

OAuth Data

-> ExchangeToken

Authorization Code

-> ExceptT (OAuth2Error Errors) m OAuth2Token

Access Token

Exchange code for an Access Token

OAuth2 spec allows credential (client_id, client_secret) to be sent either in the header (a.k.a ClientSecretBasic). or as form/url params (a.k.a ClientSecretPost).

The OAuth provider can choose to implement only one, or both. Look for API document from the OAuth provider you're dealing with. If you're uncertain, try fetchAccessToken which sends credential in authorization http header, which is common case.

Since: 2.6.0

refreshAccessToken Source #

Arguments

:: MonadIO m 
=> Manager

HTTP connection manager.

-> OAuth2

OAuth context

-> RefreshToken

Refresh Token gained after authorization

-> ExceptT (OAuth2Error Errors) m OAuth2Token 

Fetch a new AccessToken using the Refresh Token with authentication in request header.

refreshAccessToken2 Source #

Arguments

:: MonadIO m 
=> Manager

HTTP connection manager.

-> OAuth2

OAuth context

-> RefreshToken

Refresh Token gained after authorization

-> ExceptT (OAuth2Error Errors) m OAuth2Token 

refreshAccessTokenInternal Source #

Arguments

:: MonadIO m 
=> ClientAuthenticationMethod 
-> Manager

HTTP connection manager.

-> OAuth2

OAuth context

-> RefreshToken

Refresh Token gained after authorization

-> ExceptT (OAuth2Error Errors) m OAuth2Token 

refreshAccessTokenWithAuthMethod Source #

Arguments

:: MonadIO m 
=> ClientAuthenticationMethod 
-> Manager

HTTP connection manager.

-> OAuth2

OAuth context

-> RefreshToken

Refresh Token gained after authorization

-> ExceptT (OAuth2Error Errors) m OAuth2Token 

Fetch a new AccessToken using the Refresh Token.

OAuth2 spec allows credential (client_id, client_secret) to be sent either in the header (a.k.a ClientSecretBasic). or as form/url params (a.k.a ClientSecretPost).

The OAuth provider can choose to implement only one, or both. Look for API document from the OAuth provider you're dealing with. If you're uncertain, try refreshAccessToken which sends credential in authorization http header, which is common case.

Since: 2.6.0

Utilies

doJSONPostRequest Source #

Arguments

:: (MonadIO m, FromJSON err, FromJSON a) 
=> Manager

HTTP connection manager.

-> OAuth2

OAuth options

-> URI

The URL

-> PostBody

request body

-> ExceptT (OAuth2Error err) m a

Response as JSON

Conduct post request and return response as JSON.

doSimplePostRequest Source #

Arguments

:: (MonadIO m, FromJSON err) 
=> Manager

HTTP connection manager.

-> OAuth2

OAuth options

-> URI

URL

-> PostBody

Request body.

-> ExceptT (OAuth2Error err) m ByteString

Response as ByteString

Conduct post request.

handleOAuth2TokenResponse :: FromJSON err => Response ByteString -> Either (OAuth2Error err) ByteString Source #

Gets response body from a Response if 200 otherwise assume OAuth2Error

parseResponseFlexible :: (FromJSON err, FromJSON a) => ByteString -> Either (OAuth2Error err) a Source #

Try to parses response as JSON, if failed, try to parse as like query string.

parseResponseString :: (FromJSON err, FromJSON a) => ByteString -> Either (OAuth2Error err) a Source #

Parses the response that contains not JSON but a Query String

addDefaultRequestHeaders :: Request -> Request Source #

Set several header values: + userAgennt : hoauth2 + accept : `application/json`

clientSecretPost :: OAuth2 -> PostBody Source #

Add Credential (client_id, client_secret) to the request post body.