Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Bindings Access Token and Refresh Token part of The OAuth 2.0 Authorization Framework RFC6749 https://www.rfc-editor.org/rfc/rfc6749
Synopsis
- data TokenRequestError = TokenRequestError {}
- data TokenRequestErrorCode
- parseTokeRequestError :: ByteString -> TokenRequestError
- accessTokenUrl :: OAuth2 -> ExchangeToken -> (URI, PostBody)
- refreshAccessTokenUrl :: OAuth2 -> RefreshToken -> (URI, PostBody)
- fetchAccessToken :: MonadIO m => Manager -> OAuth2 -> ExchangeToken -> ExceptT TokenRequestError m OAuth2Token
- fetchAccessToken2 :: MonadIO m => Manager -> OAuth2 -> ExchangeToken -> ExceptT TokenRequestError m OAuth2Token
- fetchAccessTokenInternal :: MonadIO m => ClientAuthenticationMethod -> Manager -> OAuth2 -> ExchangeToken -> ExceptT TokenRequestError m OAuth2Token
- fetchAccessTokenWithAuthMethod :: MonadIO m => ClientAuthenticationMethod -> Manager -> OAuth2 -> ExchangeToken -> ExceptT TokenRequestError m OAuth2Token
- refreshAccessToken :: MonadIO m => Manager -> OAuth2 -> RefreshToken -> ExceptT TokenRequestError m OAuth2Token
- refreshAccessToken2 :: MonadIO m => Manager -> OAuth2 -> RefreshToken -> ExceptT TokenRequestError m OAuth2Token
- refreshAccessTokenInternal :: MonadIO m => ClientAuthenticationMethod -> Manager -> OAuth2 -> RefreshToken -> ExceptT TokenRequestError m OAuth2Token
- refreshAccessTokenWithAuthMethod :: MonadIO m => ClientAuthenticationMethod -> Manager -> OAuth2 -> RefreshToken -> ExceptT TokenRequestError m OAuth2Token
- doJSONPostRequest :: (MonadIO m, FromJSON a) => Manager -> OAuth2 -> URI -> PostBody -> ExceptT TokenRequestError m a
- doSimplePostRequest :: MonadIO m => Manager -> OAuth2 -> URI -> PostBody -> ExceptT TokenRequestError m ByteString
- handleOAuth2TokenResponse :: Response ByteString -> Either TokenRequestError ByteString
- parseResponseFlexible :: FromJSON a => ByteString -> Either TokenRequestError a
- parseResponseString :: FromJSON a => ByteString -> Either TokenRequestError a
- addDefaultRequestHeaders :: Request -> Request
- clientSecretPost :: OAuth2 -> PostBody
Token Request Errors
data TokenRequestError Source #
Instances
data TokenRequestErrorCode Source #
Token Error Responses https://tools.ietf.org/html/rfc6749#section-5.2
InvalidRequest | |
InvalidClient | |
InvalidGrant | |
UnauthorizedClient | |
UnsupportedGrantType | |
InvalidScope | |
UnknownErrorCode Text |
Instances
FromJSON TokenRequestErrorCode Source # | |
Defined in Network.OAuth.OAuth2.TokenRequest parseJSON :: Value -> Parser TokenRequestErrorCode # parseJSONList :: Value -> Parser [TokenRequestErrorCode] # | |
Show TokenRequestErrorCode Source # | |
Defined in Network.OAuth.OAuth2.TokenRequest showsPrec :: Int -> TokenRequestErrorCode -> ShowS # show :: TokenRequestErrorCode -> String # showList :: [TokenRequestErrorCode] -> ShowS # | |
Eq TokenRequestErrorCode Source # | |
Defined in Network.OAuth.OAuth2.TokenRequest (==) :: TokenRequestErrorCode -> TokenRequestErrorCode -> Bool # (/=) :: TokenRequestErrorCode -> TokenRequestErrorCode -> Bool # |
URL
:: 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 #
:: 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
:: MonadIO m | |
=> Manager | HTTP connection manager |
-> OAuth2 | OAuth Data |
-> ExchangeToken | OAuth2 Code |
-> ExceptT TokenRequestError m OAuth2Token | Access Token |
Exchange code
for an Access Token with authenticate in request header.
:: MonadIO m | |
=> Manager | HTTP connection manager |
-> OAuth2 | OAuth Data |
-> ExchangeToken | Authorization Code |
-> ExceptT TokenRequestError m OAuth2Token | Access Token |
Deprecated: use fetchAccessTokenWithAuthMethod
fetchAccessTokenInternal Source #
:: MonadIO m | |
=> ClientAuthenticationMethod | |
-> Manager | HTTP connection manager |
-> OAuth2 | OAuth Data |
-> ExchangeToken | Authorization Code |
-> ExceptT TokenRequestError m OAuth2Token | Access Token |
Deprecated: use fetchAccessTokenWithAuthMethod
fetchAccessTokenWithAuthMethod Source #
:: MonadIO m | |
=> ClientAuthenticationMethod | |
-> Manager | HTTP connection manager |
-> OAuth2 | OAuth Data |
-> ExchangeToken | Authorization Code |
-> ExceptT TokenRequestError 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
:: MonadIO m | |
=> Manager | HTTP connection manager. |
-> OAuth2 | OAuth context |
-> RefreshToken | Refresh Token gained after authorization |
-> ExceptT TokenRequestError m OAuth2Token |
Fetch a new AccessToken using the Refresh Token with authentication in request header.
:: MonadIO m | |
=> Manager | HTTP connection manager. |
-> OAuth2 | OAuth context |
-> RefreshToken | Refresh Token gained after authorization |
-> ExceptT TokenRequestError m OAuth2Token |
Deprecated: use refreshAccessTokenWithAuthMethod
refreshAccessTokenInternal Source #
:: MonadIO m | |
=> ClientAuthenticationMethod | |
-> Manager | HTTP connection manager. |
-> OAuth2 | OAuth context |
-> RefreshToken | Refresh Token gained after authorization |
-> ExceptT TokenRequestError m OAuth2Token |
Deprecated: use refreshAccessTokenWithAuthMethod
refreshAccessTokenWithAuthMethod Source #
:: MonadIO m | |
=> ClientAuthenticationMethod | |
-> Manager | HTTP connection manager. |
-> OAuth2 | OAuth context |
-> RefreshToken | Refresh Token gained after authorization |
-> ExceptT TokenRequestError 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
:: (MonadIO m, FromJSON a) | |
=> Manager | HTTP connection manager. |
-> OAuth2 | OAuth options |
-> URI | The URL |
-> PostBody | request body |
-> ExceptT TokenRequestError m a | Response as JSON |
Conduct post request and return response as JSON.
:: MonadIO m | |
=> Manager | HTTP connection manager. |
-> OAuth2 | OAuth options |
-> URI | URL |
-> PostBody | Request body. |
-> ExceptT TokenRequestError m ByteString | Response as ByteString |
Conduct post request.
handleOAuth2TokenResponse :: Response ByteString -> Either TokenRequestError ByteString Source #
Gets response body from a Response
if 200 otherwise assume OAuth2Error
parseResponseFlexible :: FromJSON a => ByteString -> Either TokenRequestError a Source #
Try to parses response as JSON, if failed, try to parse as like query string.
parseResponseString :: FromJSON a => ByteString -> Either TokenRequestError 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.