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 TokenResponseError = TokenResponseError {}
- data TokenResponseErrorCode
- parseTokeResponseError :: ByteString -> TokenResponseError
- accessTokenUrl :: OAuth2 -> ExchangeToken -> (URI, PostBody)
- refreshAccessTokenUrl :: OAuth2 -> RefreshToken -> (URI, PostBody)
- fetchAccessToken :: MonadIO m => Manager -> OAuth2 -> ExchangeToken -> ExceptT TokenResponseError m OAuth2Token
- fetchAccessToken2 :: MonadIO m => Manager -> OAuth2 -> ExchangeToken -> ExceptT TokenResponseError m OAuth2Token
- fetchAccessTokenInternal :: MonadIO m => ClientAuthenticationMethod -> Manager -> OAuth2 -> ExchangeToken -> ExceptT TokenResponseError m OAuth2Token
- fetchAccessTokenWithAuthMethod :: MonadIO m => ClientAuthenticationMethod -> Manager -> OAuth2 -> ExchangeToken -> ExceptT TokenResponseError m OAuth2Token
- refreshAccessToken :: MonadIO m => Manager -> OAuth2 -> RefreshToken -> ExceptT TokenResponseError m OAuth2Token
- refreshAccessToken2 :: MonadIO m => Manager -> OAuth2 -> RefreshToken -> ExceptT TokenResponseError m OAuth2Token
- refreshAccessTokenInternal :: MonadIO m => ClientAuthenticationMethod -> Manager -> OAuth2 -> RefreshToken -> ExceptT TokenResponseError m OAuth2Token
- refreshAccessTokenWithAuthMethod :: MonadIO m => ClientAuthenticationMethod -> Manager -> OAuth2 -> RefreshToken -> ExceptT TokenResponseError m OAuth2Token
- doJSONPostRequest :: (MonadIO m, FromJSON a) => Manager -> OAuth2 -> URI -> PostBody -> ExceptT TokenResponseError m a
- doSimplePostRequest :: MonadIO m => Manager -> OAuth2 -> URI -> PostBody -> ExceptT TokenResponseError m ByteString
- handleOAuth2TokenResponse :: Response ByteString -> Either TokenResponseError ByteString
- parseResponseFlexible :: FromJSON a => ByteString -> Either TokenResponseError a
- parseResponseString :: FromJSON a => ByteString -> Either TokenResponseError a
- addBasicAuth :: OAuth2 -> Request -> Request
- addDefaultRequestHeaders :: Request -> Request
- clientSecretPost :: OAuth2 -> PostBody
Token Request Errors
data TokenResponseError Source #
Instances
FromJSON TokenResponseError Source # | |
Defined in Network.OAuth.OAuth2.TokenRequest | |
Show TokenResponseError Source # | |
Defined in Network.OAuth.OAuth2.TokenRequest showsPrec :: Int -> TokenResponseError -> ShowS # show :: TokenResponseError -> String # showList :: [TokenResponseError] -> ShowS # | |
Eq TokenResponseError Source # | |
Defined in Network.OAuth.OAuth2.TokenRequest (==) :: TokenResponseError -> TokenResponseError -> Bool # (/=) :: TokenResponseError -> TokenResponseError -> Bool # |
data TokenResponseErrorCode Source #
Token Error Responses https://tools.ietf.org/html/rfc6749#section-5.2
InvalidRequest | |
InvalidClient | |
InvalidGrant | |
UnauthorizedClient | |
UnsupportedGrantType | |
InvalidScope | |
UnknownErrorCode Text |
Instances
FromJSON TokenResponseErrorCode Source # | |
Show TokenResponseErrorCode Source # | |
Defined in Network.OAuth.OAuth2.TokenRequest showsPrec :: Int -> TokenResponseErrorCode -> ShowS # show :: TokenResponseErrorCode -> String # showList :: [TokenResponseErrorCode] -> ShowS # | |
Eq TokenResponseErrorCode Source # | |
Defined in Network.OAuth.OAuth2.TokenRequest |
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 TokenResponseError 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 TokenResponseError m OAuth2Token | Access Token |
Deprecated: use fetchAccessTokenWithAuthMethod
fetchAccessTokenInternal Source #
:: MonadIO m | |
=> ClientAuthenticationMethod | |
-> Manager | HTTP connection manager |
-> OAuth2 | OAuth Data |
-> ExchangeToken | Authorization Code |
-> ExceptT TokenResponseError m OAuth2Token | Access Token |
Deprecated: use fetchAccessTokenWithAuthMethod
fetchAccessTokenWithAuthMethod Source #
:: MonadIO m | |
=> ClientAuthenticationMethod | |
-> Manager | HTTP connection manager |
-> OAuth2 | OAuth Data |
-> ExchangeToken | Authorization Code |
-> ExceptT TokenResponseError 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 TokenResponseError 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 TokenResponseError m OAuth2Token |
Deprecated: use refreshAccessTokenWithAuthMethod
refreshAccessTokenInternal Source #
:: MonadIO m | |
=> ClientAuthenticationMethod | |
-> Manager | HTTP connection manager. |
-> OAuth2 | OAuth context |
-> RefreshToken | Refresh Token gained after authorization |
-> ExceptT TokenResponseError m OAuth2Token |
Deprecated: use refreshAccessTokenWithAuthMethod
refreshAccessTokenWithAuthMethod Source #
:: MonadIO m | |
=> ClientAuthenticationMethod | |
-> Manager | HTTP connection manager. |
-> OAuth2 | OAuth context |
-> RefreshToken | Refresh Token gained after authorization |
-> ExceptT TokenResponseError 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 TokenResponseError 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 TokenResponseError m ByteString | Response as ByteString |
Conduct post request.
handleOAuth2TokenResponse :: Response ByteString -> Either TokenResponseError ByteString Source #
Gets response body from a Response
if 200 otherwise assume TokenResponseError
parseResponseFlexible :: FromJSON a => ByteString -> Either TokenResponseError a Source #
Try to parses response as JSON, if failed, try to parse as like query string.
parseResponseString :: FromJSON a => ByteString -> Either TokenResponseError a Source #
Parses the response that contains not JSON but a Query String
addBasicAuth :: OAuth2 -> Request -> Request Source #
Add Basic Authentication header using client_id and client_secret.
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.