# hoauth2 Changelog ## 2.15.0 (2025-10-05) - Breaking changes - Type and class renames - `OAuth2Token` renamed to `TokenResponse`. - `TokenRequestAuthenicationMethod` renamed to `ClientAuthenticationMethod`. - `HasTokenRequestClientAuthenticationMethod` renamed to `HasClientAuthenticationMethod`. - Removed several `Has*` type classes (e.g., `HasOAuth2Key`, `HasOAuthKey` from `HasTokenRequest`). - Removed deprecated API in `Network.OAuth2.HttpClient` - Deprecated functions have been removed. Use `authGetJSON`/`authGetBS`/`authPostJSON`/`authPostBS` and the `WithAuthMethod` variants with `APIAuthenticationMethod`. - Request body encoding behavior - `authPostJSON` now sends JSON with `Content-Type: application/json`. If an endpoint requires form-encoded data, use `authPostBS` or construct a custom request body. - Import/module path cleanup - Consumers should import `Network.OAuth2` (not `Network.OAuth.OAuth2`). - Behavioral changes and bug fixes - Client authentication handling - Append `client_id` and `client_secret` for `ClientSecretPost` in client credentials flow. - Refresh token flow honors the configured client authentication method. - Authorization Code flow supports client authentication methods. - Device Authorization flow - Updated handling of device authorization requests and polling behavior. - Refactors and internal cleanup - Refactored header handling, simplified URI-to-Request conversion, removed deprecated or unused internals, and general cleanups. - Dependency changes - Allow `microlens` 0.5 (`microlens` >= 0.4 && < 0.6). - Raise lower bound to `uri-bytestring` >= 0.4 (< 0.5). ## 2.14.3 (2025-03-14) - Fixes and improvements: - Append client_id and client_secret for ClientSecretPost in client credentials flow - Add raw response to token response and derive Show instances - Skip empty scope; assorted refactors and cleanups ## 2.14.2 (2025-01-30) * Updated uri-bytestring to version 0.4 ## 2.14.1 (2024-11-19) * Updated data-default to version 0.8 ## 2.14.0 (2024-11-19) * Updated crypton to version 1.0 ## 2.13.0 (2024-03-07) * Replaced cryptonite with crypton ## 2.12.0 (2024-01-19) * Updated base64 to version 1.0 ## 2.11.0 (2023-12-30) * Updated aeson to version 2.2 * Updated binary to version 0.10 * Updated bytestring to version 0.12 * Updated container to version 0.7 ## 2.10.0 (2023-11-17) * Added support for text 2.2 ## 2.9.0 (2023-10-26) * Refactored oauth2 Experiment module implementation * Removed generics * Added Device Authorization grant * Moved IdpName to hoauth2 and enabled DataKinds * Changed the type parameter in HttpClient methods * Removed data family `RefreshTokenRequest` ## 2.8.1 (2023-06-17) * Added support for GHC-9.6 * Updated CI configuration for GHC 9.6.1 * Added hiedb integration ## 2.8.0 (2023-03-15) * Added support for GHC-9.4.4 * Added support for text-2.0 ## 2.7 (2022-11-17) * Added GrantType jwt-bearer * Added JWT authentication method for ClientCredential flow * Replaced `OAuth2Error` with `TokenRequestError` * Moved `HasIdpName` class to hoauth2-demo * Improved error handling when response body is empty in `HttpClient.handleResponse` * Removed the following modules from exposure list: - Network.OAuth2.Experiment.Pkce - Network.OAuth2.Experiment.Types - Network.OAuth2.Experiment.Utils - Network.OAuth.OAuth2.Internal ## 2.6 (2022-10-04) * Changed type parameter order in http client JSON method * Modified http client to only accept one Authentication Method instead of a Set * Removed `authPostBS1` (non-standard approach to sending credentials) * Removed Douban IdP (discontinued OAuth2 support) * Deprecated all *Internal methods, added *WithAuthMethod alternatives * Changed license to MIT * Added support for PKCE flow in `Network.OAuth2.Experiment` module * Added support for Resource Owner Password and Client Credentials flows * Added `hoauth2-providers` and `hoauth2-providers-tutorial` modules * Added `hoauth2-tutorial` module ## 2.5 (2022-08-17) * Updated aeson to version 2.1 ## 2.4 (2022-08-17) * Relaxed binary and bytestring version constraints ## 2.1 (2022-02-19) * Added documentation for OAuth2 specification * Updated aeson to version 2 ## 2.0 (2022-02-15) * Breaking change: Refactored naming convention of `OAuth2` data type ```diff - { oauthClientId = "xxxxxxxxxxxxxxx" - , oauthClientSecret = Just "xxxxxxxxxxxxxxxxxxxxxx" - , oauthCallback = Just [uri|http://127.0.0.1:9988/oauthCallback|] - , oauthOAuthorizeEndpoint = [uri|https://api.weibo.com/oauth2/authorize|] - , oauthAccessTokenEndpoint = [uri|https://api.weibo.com/oauth2/access_token|] + { oauth2ClientId = "xxxxxxxxxxxxxxx" + , oauth2ClientSecret = Just "xxxxxxxxxxxxxxxxxxxxxx" + , oauth2RedirectUri = Just [uri|http://127.0.0.1:9988/oauthCallback|] + , oauth2AuthorizeEndpoint = [uri|https://api.weibo.com/oauth2/authorize|] + , oauth2TokenEndpoint = [uri|https://api.weibo.com/oauth2/access_token|] + } ``` ## 1.7.0 (2018-03-03) * Added sample server and removed individual sample tests * Added `fetchAccessToken2` function * Added `refreshAccessToken` function and deprecated `fetchRefreshToken` * Renamed `authGetBS'` to `authGetBS2` * Renamed `authPostBS'` to `authPostBS2` * Added `authPostBS3` function ## 1.0.0 (2017-04-07) * Added umbrella type `OAuth2Token` to accommodate `AccessToken` and `RefreshToken` * Typed the intermediate authentication code as `ExchangeToken` * Fixed missing client_id error in tests by appending client_id and client_secret to header